πΊ μ΄λ²μλ nginxλΌλ μΉμλ² νλ‘κ·Έλ¨μ λ‘컬μ μ€μΉν΄ 보λλ‘ νκ² μ΅λλ€.
πΊ μ΄λ₯Ό μν΄ μ»΄ν¨ν°μλ λΉμ°ν λ컀 μλμ°μ¦ νλ‘κ·Έλ¨μ΄ μ€μΉλμ΄ μμ΄μΌ νλ©°, μ€νλ μμΌλμμΌ ν©λλ€.
1. docker λͺ λ Ήμ΄λ‘ μ€μΉνκΈ°
κ°. VS Code νλ‘κ·Έλ¨μμ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν ν°λ―Έλμ λ¨Όμ μ΄μ΄ μ€λλ€.
λ. μΌλ°μ μΌλ‘λ μ΄λ―Έμ§λ₯Ό λ¨Όμ λ€μ΄λ‘λ ν 컨ν μ΄λλ₯Ό λμλλ€.
docker image pull nginx
docker run -p 80:80 nginx
νμ§λ§ λλ²μ§Έ μ€λ§ μ λ ₯ν΄λ μ΄λ―Έμ§κ° μ»΄ν¨ν°μ μλμ§ νμΈ ν μμΌλ©΄ λ€μ΄λ‘λ ν 컨ν μ΄λλ₯Ό λμ°κ² λ©λλ€. λ°λΌμ, μ°λ¦¬λ μμΌλ‘ μλμ κ°μ΄ νμ€λ§ μ λ ₯μ νμ¬ μ¬μ©ν κ²μ λλ€.
docker run -p 80:80 nginx
μ 80:80 λΆλΆμμ μλΆλΆ 80μ΄ μΉλΈλΌμ°μ μ μ λ ₯ν ν¬νΈμ λλ€. 80μ κΈ°λ³Έμ΄κΈ° λλ¬Έμ λΆμ΄μ§ μμλ λλ©°, λ€λ₯Έ ν¬νΈμΌ κ²½μ° '127.0.0.1:8080' μ΄λ° μμΌλ‘ λΆμ¬μ£Όμ΄μΌ ν©λλ€.
docker run -p 8080:80 nginx
λ§μ½, 컨ν μ΄λλ₯Ό μμ νμ§ μκ³ , μλμ κ°μ΄ 2μ€μ λͺ¨λ μ λ ₯νμλ€λ©΄, νμ¬ nginx μΉμλ² 2λκ° μμ±λμ κ°κ° λκ³ μλ κ²μ λλ€. ν¬νΈλ₯Ό λ°κΎΈμ΄ μ€λ€λ©΄ μλ‘ λ€λ₯Έ μΉμλ² μ¬λ¬κ°λ₯Ό λμμ λμΈ μλ μλ κ²μ λλ€.
docker run -p 80:80 nginx
docker run -p 8080:80 nginx
λ€. μμ κ°μ΄ nginxλ₯Ό λμ°λ©΄ λ컀 νλ‘κ·Έλ¨μ λ€μκ³Ό κ°μ΄ 보μ¬μ§ κ²μ λλ€. νμ¬λ μμμ 컨ν μ΄λ μ΄λ¦μ μ§μ νμ§ μμκΈ° λλ¬Έμ μ΄λ¦μ 무μμλ‘ μμ±λμ΄ μμ΅λλ€.
β μλ²μμλ λͺ λ Ήμ΄λ‘ 컨ν μ΄λ λ° μ΄λ―Έμ§λ₯Ό μ€ν, μ¬μ€ν, μ€μ§, μμ λ±μ ν©λλ€. μλμ°μ¦μμλ λͺ λ Ήμ΄λ‘ κ°λ₯νμ§λ§, μ νλμ λΆλΆμ λ²νΌμ λλ¬ μ»¨ν μ΄λλ₯Ό μ€ν, μ¬μ€ν, μ€μ§, μμ ν μ μμ΅λλ€.
β μ λ Έλμ λΆλΆ Images λΆλΆμ λλ¬λ³΄λ©΄ νμ¬ μ»΄ν¨ν°μ μ μ₯λμ΄ μλ μ΄λ―Έμ§λ νμΈν΄ λ³Ό μ μμΌλ©°, μ¬κΈ°μ μμ λ₯Ό ν μλ μμ΅λλ€.
λΌ. μ΄μ λ§μ§λ§μΌλ‘ VS Code μ docker extensionμ μ€μΉν΄ λ³Ό κ²μ λλ€. μλ νλ©΄μ²λΌ νμ₯μ λλ¬ dockerλ₯Ό κ²μ ν Microsoft Dockerλ₯Ό μ€μΉν΄ μ€λλ€.
κ·ΈλΌ μΌμͺ½μ λ컀 μμ΄μ½μ΄ μμ±λλ©°, λλ¬λ³΄λ©΄ VS Codeμμλ 컨ν μ΄λ, μ΄λ―Έμ§ λ±μ μμ½κ² κ΄λ¦¬ν μ μμ΅λλ€.
2. docker-compose.yml νμΌμ μμ±ν΄μ μ€μΉνκΈ° (μμΌλ‘λ μ΄ λ°©μλ§μ νμ©ν κ²μ.)
κ°. λ¨Όμ docker-compose.yml μ΄λ¦μΌλ‘ νμΌμ νλ μμ±ν΄ μ€λλ€.
λ. docker-compose.ymlμ μλμ λ΄μ©μ μ λ ₯ν ν μ μ₯ν©λλ€.
version: '3.8'
services:
web:
image: nginx
ports:
- "80:80"
μ°Έκ³ λ‘, μ λ΄μ©μ μμμ μ λ ₯νλ 'docker run -p 80:80 nginx' λ΄μ©κ³Ό μμ ν λμΌν λ΄μ©μ λλ€.
λ€. docker-compose.ymlμ μ΄μ©νμ¬ μ»¨ν μ΄λλ₯Ό μμ±νλ λ°©λ²
(λ°©λ²1) μλ ν°λ―Έλμμ docker-compose.yml νμΌμ΄ μλ κ°μ κ²½λ‘μμ μλμ κ°μ΄ μ λ ₯ν©λλ€.
docker compose up -d //λ³΄ν΅ -dλ₯Ό λ³΄ν΅ λΆμ¬μ€λλ€. daemon λͺ¨λ
(λ°©λ²2) νμκΈ°μ μλ docker-compose.yml μμ λ§μ°μ€ μ€λ₯Έμͺ½μ λλ¬ Compose Up μ μ νν΄λ λ¨.
λΌ. κ²°κ³Ό
π΄π΄ λ¬Έμ μ => μΉμλ²λ λμ μΌλ, νμ¬λ μ°λ¦¬κ° μμΌλ‘ λ§λ€ μΉνμ΄μ§λ₯Ό nginxλ₯Ό ν΅ν΄ 보μ¬μ€ λ°©λ²μ΄ μμ΅λλ€. κ·Έλμ νμ¬μ λ‘컬 μ»΄ν¨ν°μ νΉμ ν΄λμ nginx 컨ν μ΄λ λ΄λΆμ μΉ ν΄λλ₯Ό μλ‘ μ°κ²°ν κ²μ λλ€. μ΄λ κ² λλ©΄ μ°λ¦¬κ° νΉμ ν΄λμ νμΌμ λ£μ΄λλ©΄ κ·Έκ²μ΄ nginx 컨ν μ΄λ λ΄λΆμ μΉ ν΄λμλ λκ°μ΄ λμΌν λ©λλ€.
3. docker-compose.yml νμΌ μ λλ‘ μμ±νκΈ°
κ°. μ°μ νμκΈ°μμ data ν΄λλ₯Ό λ§λ€μ΄ μ€λλ€.
λ. data ν΄λ μμ index.html νμΌμ νλ λ§λ€κ³ μλμ²λΌ μ λΉν λ΄μ©μ μ λ ₯ν΄ μ€λλ€.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
μλ
νμΈμ?
</body>
</html>
λ€. docker-compose.yml μμ
version: '3.9'
services:
web:
image: nginx
ports:
- "80:80"
container_name: nginx_cname #컨ν
μ΄λ μμ± μ΄λ¦ μ§μ
restart: unless-stopped #컨ν
μ΄λλ₯Ό μ§μ stopμν€κΈ° μ μλ κ³μ μ¬μμ.
volumes: #νμ¬μ νμ λλ ν λ¦¬μΈ dataμ
- ./data:/usr/share/nginx/html #nginx 컨ν
μ΄λ λ΄λΆμ κΈ°λ³Έ μΉν΄λμΈ
#/usr/share/nginx/htmlμ μ°κ²°
λΌ. μμμ λ°°μ΄ 'docker compose up -d' λͺ λ Ήμ μ λ ₯νλ©΄ 컨ν μ΄λκ° μ¬μμ±λλ©°, μλ νλ©΄μ²λΌ λΈλΌμ°μ μμ μ°λ¦¬κ° μμ±ν html λ¬Έμλ₯Ό λ³Ό μ μμ΅λλ€.
λ§. μ΄μ data ν΄λ λ°μ index.html νμΌμ μμ , μ μ₯μ ν ν λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨νλ©΄ λ°λ‘ λ³κ²½μ΄ λ©λλ€.
4. docker-compose.yml λ‘ nginx μΉμλ² 2κ° μ€νν΄λ³΄κΈ°
κ°. λ¨Όμ λλ²μ§Έ μΉμλ²μ μ°κ²°ν data2 ν΄λλ₯Ό μμ±ν΄ μ€ ν, κ·Έ μμ index.html νμΌμ μμ±νμ¬ κ°λ¨ν μ λ ₯ν΄ μ€λλ€.
λ. docker-compose.yml νμΌμ μμ ν΄ μ€λλ€. (web λΆλΆμ ν΅μ§Έλ‘ 볡μ¬νμ¬ μλμͺ½μ λΆμ¬μ€ ν νμν λΆλΆμ μμ ν΄ μ€λλ€.)
version: '3.9'
services:
web:
image: nginx
ports:
- "80:80"
container_name: nginx_cname
restart: unless-stopped
volumes:
- ./data:/usr/share/nginx/html
web2: #μλΉμ€ μ΄λ¦μ μμ λ€λ₯΄κ² μμ
image: nginx #μ΄λ―Έμ§λ nginx κ·Έλλ‘ μ¬μ©
ports:
- "8080:80" #ν¬νΈ μμ νμ (λ€μ 80μ κ·Έλλ‘ λλ κ²)
container_name: nginx_cname2 #컨ν
μ΄λ μμ± μ΄λ¦λ μμ λ€λ₯΄κ² μμ
restart: unless-stopped
volumes:
- ./data2:/usr/share/nginx/html #λλ²μ§Έ μΉμλ²λ ./data2 ν΄λμ μ°κ²°νμμ.
β¨ μμμ λλ€ λͺ¨λ image: nginx μ΄λ―Έμ§λ₯Ό λμΌνκ² μ¬μ©νκ³ μμ΅λλ€. κ°μ μ΄λ―Έμ§μμ μλ‘ λ€λ₯Έ 컨ν μ΄λλ₯Ό μ¬λ¬κ° μμ±ν μ μμ΅λλ€. λν, μ΄λ―Έ nginx_cname 컨ν μ΄λ μμ±μ μ΄λ―Έμ§λ₯Ό λ°μμκΈ° λλ¬Έμ, λλ²μ§Έ nginx_cname2 컨ν μ΄λ μμ±μ μμ£Ό λΉ λ₯΄κ² μμ±λ©λλ€.
β¨ μμμ 'image: nginx' λΌκ³ μ μνμ§λ§, μ΄κ²μ μ¬μ€ 'image: nginx:latest'λ₯Ό μλ―Έν©λλ€. μ΄ μΈμλ νΉμ λ²μ μ μ€μΉνκ³ μΆλ€λ©΄, 'docker pull nginx:1.23.2' μ΄λ° μμΌλ‘ μ¨λ λλ©°, μ΄λ―Έμ§μ μ’ λ₯λ λ¬΄μ² λ§κΈ°μ κ·Έμ€μμ μ νν΄μ μ μ΄μ£Όλ©΄ λ©λλ€. μ°Έκ³ λ‘ nginxμ μ΄λ―Έμ§μ μ’ λ₯λ₯Ό μλμ λ§ν¬λ₯Ό λλ¬ μ°Έκ³ ν΄ λ³΄μκΈ° λ°λλλ€.
https://hub.docker.com/_/nginx/tags
nginx Tags | Docker Hub
hub.docker.com
λ€. μ΄μ 'docker compose up -d' λͺ λ ΉμΌλ‘ 컨ν μ΄λλ₯Ό μ¬μμ±ν©λλ€.
λ€. μ΄μ μΉλΈλΌμ°μ λ₯Ό μ΄κ³ , http://127.0.0.1 κ³Ό http://127.0.0.1:8080 μ μ λ ₯νμ¬ μ μνλ©΄ μλ‘ λ€λ₯Έ nginx μΉμλ²μ μ μνλ κ²μ λ³΄μ€ μ μμ΅λλ€.
πΊπΊ μμ ν λͺ¨λ μμ€λ μλ λ§ν¬μμ νμΈνμ€ μ μμ΅λλ€. πΊπΊ
https://github.com/mmssem/progstudy
GitHub - mmssem/progstudy
Contribute to mmssem/progstudy development by creating an account on GitHub.
github.com
πΊ λͺ©μ°¨ πΊ(보μλ €λ©΄ μλ λ보기 λ₯Ό λλ¬μ£ΌμΈμ.)
1. Dockerλ₯Ό μ¬λνκ² λ μ΄μ (Docker+Nginx_proxy+SSL+Github action)
2. Docker μ€μΉ (Docker+Nginx_proxy+SSL+Github action)
3. MobaXterm (Docker+Nginx_proxy+SSL+Github action)
5. λ‘컬μ nginx(μΉμλ²) μ€μΉν΄λ³΄κΈ° (Docker+Nginx_proxy+SSL+Github action)
6. μλ² μλ λ°°ν¬ (1) λ‘컬 => github (Docker+Nginx_proxy+SSL+Github action)
7. μλ² μλ λ°°ν¬ (2) μλ²μ μλ λ°°ν¬λ₯Ό μν runner μ€μΉ
8. μλ² μλ λ°°ν¬ (3) λ‘컬 μμ€ -> git push -> github -> μλ² μλ λ°°ν¬ νμΈ
9. (tip) git Add, Commit, push νλ²μ νκΈ°
10. μλ² μλ λ°°ν¬ (4) λ°°ν¬μ μλ²μμ docker-compose.yml μλ μ€ν
11. μλ²μ vnstat μ€μΉ (docker-compose.yml μ΄μ©)
12. μλ²μ λ컀 μ€μΉμ network μ€μ λ³κ²½ μ¬ν νμΈνκΈ°
13. nginx + php + mysql + phpmyadmin μ€μΉνκΈ°
14. Nginx - Reverse Proxy, Load Balancing κΈ°λ₯ νμ©
15. λ‘컬μμ μμ΄νΌ λμ λλ©μΈλͺ μ¬μ©νκΈ°(hosts μμ )
16. httpsλ₯Ό μ°κΈ° μν΄ λ‘컬μμ SSL ν μ€νΈ νκΈ° (with mkcert)
17. μλ²μ SSL μ μ©νκΈ° (docker + Let's Encrypt + wildcard μΈμ¦μ + Cloudflare)
18. μμΌλμΉ΄λ μΈμ¦μ μλ κ°±μ (docker + Let's Encrypt + wildcard μΈμ¦μ + crontab)