[docker] Portainer๋ฅผ ์ด์ฉํ nginx ์ค์น
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
์ค๋์ ์ง๋๋ฒ Ubuntu 20.04์ ์ค์นํ Docker์ Portainer๋ฅผ ํตํด nginx๋ฅผ ์ค์น ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
๋ง์ฝ Docker ์ค์น์ Portainer๊ฐ ์์ง ์ค์น๊ฐ ๋์ง ์์ผ์ จ๋ค๋ฉด? 'Docker์ Portainer ์ค์น'์ ๊ด์ฌ์ ์ฃผ์ธ์!
๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค!
โ ๋ชฉ์ฐจ
VMWare๋ฅผ ํตํ Ubuntu 20.04 LTS ์ค์น
Portainer๋ฅผ ์ด์ฉํ nginx ์ค์น
[docker] Portainer๋ฅผ ์ด์ฉํ tomcat ์ค์น
[docker] Portainer๋ฅผ ์ด์ฉํ Maria DB ์ค์น
๐ nginx ์ค์น
๐ Volume ์์ฑ
[ volume ] ์ด๋ผ๋ Menu๋ฅผ ๋๋ฌ์ฃผ์ธ์!
[ Add volume ] ์ ํด๋ฆญํด์ ์๋ก์ด Volume์ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด์์!
Volume ์๋ก ๋ง๋ค๊ธฐ๋ฅผ ํตํด Name๋์ ์ํ๋ Volume ์ด๋ฆ์ ์ ๋ ฅํ๊ณ , [ Create the Volume ]์ ๋๋ฌ์ค๋๋ค.
์ฃผ๋ํ๋์ nginx๋ฅผ ์ค์นํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ [ junyharang_nginx ] ๋ผ๋ ์ด๋ฆ์ ๋ถํ ์ฃผ์์ต๋๋ค!
๋ฐฉ๊ธ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์๋ก์ด Volume์ด ์๊ธฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์!
๐ nginx Container ์์ฑ
์ข์ธก Menu์์ [ Container ]๋ฅผ ๋๋ฌ Container ์ค์ ์ฐฝ์ผ๋ก ์ด๋ ํ๋ ๊ฒ์ด์์!
๊ทธ๋ฐ ๋ค [ Add Container ]๋ฅผ ๋๋ฌ ์๋ก์ด Container๋ฅผ ์์ฑํ๋๋ก ํ ๊ฒ์!
Docker์์ ๋งํ๋ Container๋ผ๋ ๊ฒ์ VM Ware๋, Hyper-V, Vitual BOX ๋ฑ ๊ฐ์ ๋จธ์ ํ๋ก๊ทธ๋จ์์ ์นญํ๋ Virtual Machine ํน์ Guest OS๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฐ์ ์ปดํจํฐ์ ์ ์ฌํ ๊ฒ์ด์์.
ํ์ง๋ง, ์ฐจ์ด์ ์ ์๋์ ๊ฐ์ด OS๊ฐ HOST OS์์ ๋ ์ค์น๋๋ ๊ฒ์ด ์๋๋ผ๋ ์ ์ธ ๊ฒ์ด์์!
๐ Container Name์ผ๋ก [ nginx ]๋ผ๊ณ ์ ๋ ฅํ๊ณ , image๋์ [ nginx/server ] ์ ๋ ฅ
๋ง์ฝ ํน์ ๋ฒ์ ์ ์ํ๋ค๋ฉด [ nginx/server:10.3 ] ๊ณผ ๊ฐ์ด ์ ๋ ฅ
publish a new network port๋ฅผ ํตํด host (Ubuntu)์ Container์ Well-Known Port ์ค http์ Port Number 80์ ์ ๋ ฅ ํด ์ค๋๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ [ map additional volume ] ์ ์ฐ์์ผ๋ก 3๋ฒ ๋ฑ!๋ฑ!๋ฑ! ํด๋ฆญ ํด ์ฃผ๋ ๊ฒ์ด์์!
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Container์ nginx Server๋ก ์ฌ์ฉ๋ Container์ Volume์ Mapping ํด ์ฃผ๋ ๊ฒ์ด์์.
[ Bind ] ๋ฅผ ๋์ด ์ค์ผ host๋ก ์ ๋ ฅ์ด ๊ฐ๋ฅํ๋ ์ฐธ๊ณ ํด ์ฃผ์๊ณ , junyharang์ด๋ผ๊ณ ์จ์ ธ ์๋ ๋ถ๋ถ์ ์ฌ๋ฌ๋ถ๋ค์ด ubuntu์ ์ ์ํ ๋ ์ฌ์ฉํ๋ ๊ณ์ ๋ช ์ ์ ๋ ฅ ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์!
๋๋๋ก root๋ ๋ณด์์์ ๋ฌธ์ ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ถ์ฒ ๋๋ฆฝ๋๋ค!
์ฐ๋ฆฌ๊ฐ ์์์ [ host ]๋์ ์ ๋ ฅํ directory๋ ์์ง ๋ง๋ค์ง ์์ ๊ฒ๋ค์ธ ๊ฒ์ด์์.
๋ฐ๋ผ์ Ubuntu์์ ์ง์ ํด๋น dirctory๋ค์ ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋ต๋๋ค!
junyharang@junyharang-virtual-machine:/docker/portainer$ mkdir -p /home/junyharang/app/nginx
junyharang@junyharang-virtual-machine:/docker/portainer$ cd /home/junyharang/app/nginx/
portainer์์ ์ ๋ ฅํ๋๋๋ก directory๋ฅผ ์์ฑํด ์ฃผ๊ณ , ๊ทธ ์์น๋ก ์ด๋์ ํด์ค๋๋ค.
vim์ผ๋ก ๋น ํ์ผ์ ๋ง๋ค๋ ค๊ณ ํ๋๋ vim์ด ์๋ค๊ณ ํฉ๋๋ค!
๊ทธ๋ด ๋ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์นํ๋ฉด ๋๋ ๊ฒ์ด์์!
์ฐธ๊ณ ๋ก vim ์ธ์ nano, vi์ ๊ฐ์ Editer๋ฅผ ์ฌ์ฉํด๋ ์๊ด ์์ต๋๋ค!
junyharang@junyharang-virtual-machine:~/app/nginx$ sudo apt install vim
๊ทธ๋ฐ ๋ค ์ฃผ๋ํ๋์ vim์ ์ฌ์ฉํด์ ์์ ๊ฐ์ด ๋น file์ ๋ง๋ค์ด ์ฃผ๊ณ ,
mkdir์ ํตํด html ์ด๋ผ๋ directory๋ฅผ ์ถ๊ฐ๋ก ๋ง๋ ๊ฒ์ด์์.
vim์ ๋ค์ด์ค๋ฉด ๋ฐ๋ก [ esc ] Key๋ฅผ ๋๋ฅด๊ณ , [ : ] ์ฝ๋ก ์ ๋๋ฌ์ค ๋ค wq๋ฅผ ์ ๋ ฅํ๊ณ , Enter๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋ ์ ๋๋ค!
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๊ฐ portainer์์ ์ค์ ํ๋ file ํน์ directory๋ค์ด ๋ชจ๋ ๋ง๋ค์ด์ก๋ค์!
์ด์ [ add environment variable ] ์ ๋๋ฒ ๋ฑ!๋ฑ! ๋๋ฌ์ฃผ์ด ์์ ๊ฐ์ด PORT์ HOST๋ฅผ ์ค์ ํด ์ค๋๋ค!
๋ง์ง๋ง์ผ๋ก [ Deply the container ] ๋ฅผ ๋๋ฌ ์ฃผ๋ ๊ฒ์ด์์!
์์ ๊ฐ์ด Container List์ ์๊ธด ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค!
๊ทธ๋ผ ์ด์ ์น ์ฌ์ดํธ๋ก ์ ์ ํด ๋ณผ๊น์?
์ง์! ์ ์์ ์ผ๋ก nginx๋ผ๋ Web Service๊ฐ ๊ตฌ๋๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์!
์ ์์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๋์๋ค์!
ํ์ง๋ง, html Directory๋ฅผ Docker Container Path ๋ฐ์ผ๋ก ๋นผ์ Host ์ชฝ์ ์ค์ ํ์ง ์์ผ๋ฉด Web Server๋ก์จ์ ์๋ฏธ๊ฐ ์๋ ๊ฒ์ด์์.
์๋ํ๋ฉด? ๊ด๋ฆฌ์๊ฐ ์ง์ html File์ Uploadํ๊ณ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ !
Portainer์์ nginx Container์ Console ํญ๋ชฉ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ํด
์์ ๋นจ๊ฐ ๋ค๋ชจ์นธ ํ์๋ฅผ ํด๋ฆญ ํด์ฃผ์ด์ผ ํ๋ ๊ฒ์ด์์.
์ด์ ๋ถํฐ html Directory๋ฅผ Servingํ ๊ฒ์ด๊ธฐ์ Default html File๋ค์ ๋ชจ๋ Copyํ๋๋ก ํ๊ฒ ์ต๋๋ค!
Unix / Linux์๋ ๋ง์ Shell์ด ์์ง๋ง, ์ฐ๋ฆฌ๋ bash Shell๋ค ์จ๋ณด๋๋ก ํ ๊ฒ์ด์์!
์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌํ๊ป ์ฌ์ฉํ๋ Ubuntu๋ Bash Shell์ ์ฐ๊ณ ์์๋ต๋๋ค!
์์ ๊ฐ์ด ์ ์์ด ์๋๋ ๋ถ๋ค์ ๋ค๋ฅธ Menu๋ก ๊ฐ๋ค๊ฐ ๋ค์ ์๋ํ๋ฉด ๋ฉ๋๋ค!
root@06126c3a38d6:/# cp -R /usr/share/nginx/html/* /temp-nginx/
์์ ๊ฐ์ด ์ ๋ณต์ฌ ๋์์์ ํ์ธํ ์ ์๋ค์!
์ด์ Disconnect๋ฅผ ๋๋ฌ ๋น ์ ธ๋๊ฐ ์ฃผ์๋ฉด ๋ฉ๋๋ค!
๊ทธ๋ฐ ๋ค ๋ค์ [ Containers ] Menu๋ก ๋ค์ด์ ์ฃผ์๋ฉด ๋์!
nginx Container Name์ ํด๋ฆญ ํด ์ฃผ์ ๋ค
[ Duplicate / Edit ]์ ๋๋ฌ Image๋ฅผ ๋ค์ ์ค์ ํด ์ฃผ๋๋ก ํ๋ ๊ฒ์ด์์.
๋ฐฉ๊ธ ์ฐ๋ฆฌ๊ฐ html Directory ๊ด๋ จํด์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด
ํด๋น ์ฌํญ์ ๋ณ๊ฒฝํด ์ฃผ๋๋ก ํด์ผ ํ๋ ๊ฒ์ด์์.
๊ทธ๋ฐ ๋ค ๋ค์ [ Deploy the container ]๋ฅผ ๋๋ฌ ์ฃผ์๋ฉด?
[ Replace ] ๋ฅผ ๋๋ฌ ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์!
์ญ์ ์ ์์ ์ผ๋ก nginx Web Service๊ฐ ์๋ ์ค์ ์๋ค์!
Ubuntu๊ฐ ์ฌ์ฉ์ค์ธ IP๋ฅผ ์ ๋ ฅํ๋ฉด ์ด๋ ๊ฒ Browser๋ก ์ ์ํ ์ ์๋ต๋๋ค!
์ด์ ๋ถํฐ๋ html File์ Host (Ubunt OS) Path /home/{User Name}/app/nginx/html ๊ฒฝ๋ก์ Uploadํด์ Web Server๋ก ์ฌ์ฉํ ์ ์๋ต๋๋ค!
์ html Copy ์์ ์ ํ ์ด์ ๋ Container Image๋ง๋ค ๋ค๋ฅด๊ธด ํ์ง๋ง, ๊ธฐ๋ณธ ์ค์ ์ HOST Directory๋ก ๋ณ๊ฒฝ ์ ์๋ ์์ฑ ํด ์ฃผ๋ Container๋ ์์ง๋ง, nginx Image์ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ๋ํ๋ ๋ณต์ฌ ํด์ค์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค.
๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝ ํด ์ฃผ๋ ์ด์ ๋ Docker Image์ ๊ธฐ๋ณธ ์ค์ ํ์ผ์ด ์๋ User๊ฐ ์ง์ ๊ด๋ฆฌํ๊ธฐ ์ํจ์ธ ๊ฒ์ด์์.
Container์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณํ์ง ์๋ ํ์ผ๋ค๋ง ์กด์ฌํ๊ณ , ์ค์ ์ค์ ํ์ผ์ด๋, html ๊ฐ์ ๊ฒฝ๋ก๋ Host ์ธก์ผ๋ก
๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ ๊ฒ์ด Docker์ ๋๋ค๋ฅธ Point์ธ ๊ฒ์ด์์!
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์
จ๋์? ๊ตฌ๋
๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค!