Docker (๋„์ปค)/์„œ๋ฒ„๊ตฌ์ถ•(SSL)

4. ๋„์ปค๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์— vnstat ์„ค์น˜ ๋ฐ ์‚ญ์ œํ•˜๊ธฐ(Docker+Nginx_proxy+SSL+Github action)

๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…) 2022. 10. 29. 18:25
728x90
๋ฐ˜์‘ํ˜•

 vnstat๋Š” ์›น์„œ๋ฒ„์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒดํฌํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„ ์ฝ˜์†”์—์„œ ๊ทธ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ์ด๊ฒƒ์„ ์›นํŽ˜์ด์ง€๋กœ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค๋งŒ, vnstat๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•œ ํ›„ ์›นํŽ˜์ด์ง€๋กœ ๋ณด๋ ค๋ฉด ์›น์„œ๋ฒ„ ์„ค์น˜, ๊ธฐํƒ€ ๋ณต์žกํ•œ ์„ค์ • ๋“ฑ์„ ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ์ž‘์—…์ด ์‰ฝ์ง€ ์•Š์•„ ๊ฒฐ๊ตญ ์˜ˆ์ „์— ์ €๋Š” ์‹คํŒจํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๋„์ปค๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์•„์ฃผ ์†์‰ฝ๊ฒŒ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์„ค์น˜ ๋ฐ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

1. ์„œ๋ฒ„ ์ฝ˜์†”์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

docker run -d \
    --restart=unless-stopped \
    --network=host \
    -e HTTP_PORT=8685 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    --name vnstat \
    vergoh/vnstat

์œ„ ๋ช…๋ น์€ vergoh/vnstat ์ด๋ฏธ์ง€๊ฐ€ ์ปดํ“จํ„ฐ์— ์—†์œผ๋ฉด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํ›„,  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ 8685 ํฌํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๋ช…๋ น์ž„. 

(์ฐธ๊ณ )  vergoh/vnstat - Docker Image | Docker Hub

 

Docker Hub

 

hub.docker.com

 

2. ์ด์ œ ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด์–ด ์•„๋ž˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

http://์ž์‹ ์˜์„œ๋ฒ„์•„์ดํ”ผ:8685/
(์˜ˆ์‹œ)
http://192.168.1.250:8685/

ํ•˜์ง€๋งŒ, ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜์ฐฝ์ด ๋œฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ด๊ฒƒ์€ ํด๋ผ์šฐ๋“œ ๋ฐฉํ™”๋ฒฝ์—์„œ 8685 ํฌํŠธ๊ฐ€ ๋ง‰ํ˜€์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์˜ ํด๋ผ์šฐ๋“œ ์›น์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ๋ฐฉํ™”๋ฒฝ ๊ธฐ๋Šฅ์œผ๋กœ ๋“ค์–ด๊ฐ„ ํ›„ 8685 ํฌํŠธ๋ฅผ ์—ด์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์•„๋ž˜ ํ™”๋ฉด์€ Google Cloud ๋ฐฉํ™”๋ฒฝ ๊ด€๋ จ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

 

3. ์œ„ ํ™”๋ฉด์—์„œ ์ž˜ ์„ค์ •ํ•˜์˜€๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  

ํ˜น์‹œ๋‚˜ ์œ„ ๋ฐฉํ™”๋ฒฝ๊นŒ์ง€ ์—ด์–ด์ฃผ์—ˆ๋Š”๋ฐ๋„, ์—ฐ๊ฒฐ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ฆฌ๋ˆ…์Šค ์ž์ฒด์˜ ๋ฐฉํ™”๋ฒฝ์—์„œ ํ•ด๋‹น ํฌํŠธ๊ฐ€ ์—ด๋ ค์žˆ์ง€ ์•Š์•„์„œ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ผํด VM์ธ ๊ฒฝ์šฐ iptables ๋ฐฉํ™”๋ฒฝ์—์„œ๋„ ์—ด์–ด์ฃผ์–ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

iptables -I INPUT -p tcp --dport 8685 -j ACCEPT

 

4.  vnstat ์„œ๋น„์Šค๋ฅผ ์•„์ฃผ ๊นจ๋—ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๊ธฐ

 ์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„์— nginx, mysql, phpmyadmin  ๋“ฑ์„ ๋„์ปค๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋•Œ๋งˆ๋‹ค ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ•œ์ค„ํ•œ์ค„ ์ž…๋ ฅ์„ ํ•˜๊ธด ๋„ˆ๋ฌด ๊ท€์ฐฎ์Šต๋‹ˆ๋‹ค.

docker run --name some-nginx -d -p 8080:80 some-content-nginx
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php your-script.php
......

๊ทธ๋ž˜์„œ ์•ž์œผ๋กœ๋Š” ์ด๊ฒƒ๋“ค์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ(docker-compose.yml)์— ๋ชจ๋‘ ์ž…๋ ฅํ•˜์—ฌ ํ•œ๋ฐฉ์— ๋ชจ๋‘ ์„ค์น˜ํ•  ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ž์—์„œ ์„ค์น˜ํ–ˆ๋˜ vnstat ์„œ๋น„์Šค๋ฅผ ์ง€๊ธˆ์€ ์ง€์›Œ๋ฒ„๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

> ๊ธฐ๋ณธ์ ์ธ ๋„์ปค ๋ช…๋ น์–ด

์ฐธ๊ณ  ๋„์ปค ๋ช…๋ น  
docker ps -a ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒƒ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ ๋ณด๊ธฐ
docker images -a ๋„์ปค ์ด๋ฏธ์ง€ ๋ชจ๋‘ ๋ณด๊ธฐ
docker rm *id* ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker rmi *id* ๋„์ปค ์ด๋ฏธ์ง€ ์‚ญ์ œ
docker rm -f $(docker ps -aq) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ ์‚ญ์ œ
docker rmi $(docker images -q) ๋„์ปค ์ด๋ฏธ์ง€ ๋ชจ๋‘ ์‚ญ์ œ
 

> ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ํ™•์ธ

docker ps

> ๋ฉˆ์ถฐ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ๋ชจ๋‘ ํ™•์ธ

docker ps -a

> ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

docker rm -f c1ec115b9c1f  //์ปจํ…Œ์ด๋„ˆ id ๋ชจ๋‘ ๊ธฐ๋ก, -f ์˜ต์…˜์€ ์‹คํ–‰์ค‘์ผ ๊ฒฝ์šฐ ๊ฐ•์ œ ์‚ญ์ œ
docker rm -f c1            //๋™์ผํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ id ์ผ๋ถ€๋ถ„๋งŒ ์ ์–ด๋„ ๋จ
docker rm -f vnstat        //์ปจํ…Œ์ด๋„ˆ name์„ ์ ์–ด์ฃผ์–ด๋„ ๋จ

> ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ผ๊ด„ ์‚ญ์ œ

docker rm -f $(docker ps -aq)

 

๐Ÿ”ด ์œ„ ๋‚ด์šฉ์€ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์‚ญ์ œํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์„ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€๋Š” ์•„์ง ์„œ๋ฒ„์— ๋‚จ์•„์žˆ์Šต๋‹ˆ๋‹ค. (์ถ”ํ›„ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์‹œ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ๋ฐ”๋กœ ์ƒ์„ฑ์ด ๋˜๋ฉฐ, ์—†์„ ๊ฒฝ์šฐ ๋„์ปค ํ—ˆ๋ธŒ์—์„œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ํ›„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.)

> ์ด๋ฏธ์ง€ ๋ชจ๋‘ ํ™•์ธ

docker images -a

> ํŠน์ • ์ด๋ฏธ์ง€ ์‚ญ์ œ

docker rmi *id*

> ์ด๋ฏธ์ง€ ์ „์ฒด ์‚ญ์ œ

docker rmi $(docker images -q)

 


๐Ÿบ๐Ÿบ ์ž‘์—…ํ•œ ๋ชจ๋“  ์†Œ์Šค๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿบ๐Ÿบ

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)

4. ๋„์ปค๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์— vnstat ์„ค์น˜ ๋ฐ ์‚ญ์ œํ•˜๊ธฐ(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)

 

 

728x90
๋ฐ˜์‘ํ˜•