[Docker] Dockerfile ์ ๋ฌด์์ผ๊น? (1) - ๋์ปคํ์ผ์ด ๋ญ๊ณ ์์ฃผ ์ฐ์ด๋ ๋ช ๋ น์ด์ ๋ํด ์์๋ณด์.
ํด๋น ๊ธ์ 2๋ถ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
-
- Dockerfile ์ ๋ฌด์์ผ๊น? (1)- ๋์ปค ํ์ผ์ด ๋ญ๊ณ ์ด๋ค ๋ช ๋ น์ด๊ฐ ์๋์ง ์์๋ณด์. ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค ํ์ผ์ด ๋ฌด์์ด๊ณ ์ ์ฌ์ฉํ๋ฉฐ ์ด๋ค ๋ช ๋ น์ด๊ฐ ์๋์ง ์์๋ณด๋ ์๊ฐ์ด๊ณ
-
- Dockerfile ์ ๋ฌด์์ผ๊น? (2)- Dockering ์ค์ต (๋ฆฌ์กํธ์ nginx๋ฅผ ๋์ปค๋ผ์ด์ง ํ๊ธฐ)์ 1๋ถ์์์ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค์ ์๋น์ค๋ฅผ ๋์ปค๋ผ์ด์ง ํด๋ณด๋ ์๊ฐ์ ๋๋ค.
์๋ก ์์กดํ๊ณ ์๋ ๊ฐ๋ ์ด ์์ผ๋ฏ๋ก ํ ๋ฒ ๊ฐ๋ณ๊ฒ ์ฝ์ด๋ณด์๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค :)
์ด๋ฒ ์๊ฐ์๋ Dockerfile์ ๋ฌด์์ด๊ณ ์ด์ฉ๋ค ํ์ํ์ผ๋ฉฐ ์ด๋ค ๋ถํธํ ์ ์ ํด๊ฒฐํ ์ ์๋์ง ์์๋ณด๋ ์๊ฐ์ด๋ค.
์ฐ์ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ฆฌ์ Application์ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
์ฐ์
- ๋น์ด์๋ Ubuntu ์ด๋ฏธ์ง๋ฅผ Dockerhub์์ pullํ๊ฒ ๋๋ค.
- git์ด๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ ํด๋น ์์ค์ฝ๋๋ฅผ ubuntu ์ด๋ฏธ์ง ๋ด๋ก ๋ณต์ฌํ๋ค.
- ์์ค์ฝ๋๊ฐ ๋ด๊ฒจ์๋ Ubuntu ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋์์ ์ด๋ฏธ์งํํด์ ๋ฐฐํฌํ๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ์ ํ๊ณ ๋ฐฐํฌ๋ฅผ ํ๋ ๊ฒ์ ํ ๋ฒ๋ง ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ํด์ ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค.
๊ทธ๋ผ ์์ ๊ฐ์ ๊ณผ์ ์ ๋งค์ฐ ๋ฐ๋ณต์ ์ธ ์์
์ด๋ฏ๋ก ์ด๋ฅผ ํ๋๋ก ๋ฌถ์ ์ ์๋ ์์
์ด ํ์ํด์ง๋๋ฐ, ์ด๊ฒ ๋ฐ๋ก ๋์ปคํ์ผ์ด ์์
์ ๋์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๋์ปค ํ์ผ
Dockerfile์ ์ ํํ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
ํ๋์ ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์ ์์ด์ผํ ํจํค์ง, ์์กด์ฑ, ์์ค์ฝ๋, ์คํฌ๋ฆฝํธ ๋ค์ ํ๋์ file๋ก ๊ธฐ๋กํ์ฌ ๋์ปค๊ฐ ์ฝ๊ณ ์ด๋ฅผ ์คํํ์ ์ด๋ฏธ์งํ ์ํฌ ๋ช ๋ น ํ์ผ
Dockerfile์ ์์ ๊ณผ์ ์ ๋น๋(Build) ๊ณผ์ ์ด๋ผ ํ๋ฉฐ ์ด๋ฐ ๋น๋๋ฅผ ์ํ ๋ช ๋ น์ด๊ฐ ๋ฐ๋ก ๋น๋ ๋ช ๋ น์ด์ด๋ค.
์ด ๋น๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ์ฐ๋ฆฌ๋ ๋์ปค ํ์ผ์ ๊ตฌ์ฑํ๊ฒ ๋๋ค.
๋์ปค๋ผ์ด์ง Dockerizing
๋์ปค๋ผ์ด์ง์ ๋ง ๊ทธ๋๋ก ๋์ปคํ ์ํค๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์๋์์ ๋ฐฐ์ธ ๋ช
๋ น์ด๋ค๋ก Dockerfile์ ๋ง๋ค๊ณ ๋์ปค ์ด๋ฏธ์งํ ์ํจ๋ค๋ฉด ๊ทธ ๊ณผ์ ์ ๋ฐ๋ก Dockerizing ํ๋ค. ๋ผ๊ณ ํํํ๋ ๊ฒ์ด๋ค.
Dockerfile Build ๋ช ๋ น์ด
๋์ปคํ์ผ์ ๋น๋ ๋ช ๋ น์ด์๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์๋ค.
- ํ ์ค์๋ ํ๋์ ๋ช ๋ น์ด๋ง ์ฌ ์ ์๋ค.
- ๋ช
๋ น์ด์ ๊ตฌ์กฐ๋
๋ช ๋ น์ด + ์ต์
์ ๊ตฌ์กฐ๋ก ๋ช ๋ น์ด๊ฐ ๋จผ์ ์ค๊ฒ ๋๋ค. - ์๋ฌธ์ ํ๊ธฐ๋ ๊ฐ๋ฅํ๋ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฌธ์ ํ๊ธฐ๋ฅผ ์ฐ์ ์ผ๋ก ํ๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋์ปคํ์ผ์ ๋น๋ ๋ช ๋ น์ด๋ ํ์๊ฐ ๋ง๋ฌ๋ ๋ช ๋ น์ด์ค ํ์ ์ํ๋ค.
๋์ ๋ณด๊ธฐ์๋ ๋ฑ ์ ์ ์์ผ๋ฉฐ ๊ทธ ๊ธฐ๋ฅ ๋ํ ์์ฃผ ๋งค๋ ฅ์ ์ด๋ค.
Dockerfile ๋ช ๋ น์ด ์ข ๋ฅ
๋น๋ ๋ช ๋ น์ด๋ ๋ค์ํ ์ต์ ์ด ์๊ณ ๋ค์ํ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ์ง๋ง ์ฐ๋ฆฌ๋ ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ๋จผ์ ๋ฐฐ์ฐ๊ณ ๊ณ ๊ธ ๋ช ๋ น์ด๋ ๋ค์์ ์์๋ณด๊ธฐ๋ก ํ์.
๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๊ฐ ์๋ค.
- FROM
- MAINTAINER
- RUN
- ADD
- WORKDIR
- EXPOSE
- CMD
FROM
FROM ๋ช ๋ น์ด๋ base Image๋ฅผ ์ง์ ํ๋ค.
์ฃผ๋ก Ubuntu๋ CentOS์ ๊ฐ์ OS๋ฅผ ์ง์ ํ๋๋ฐ, ํด๋น ๋์ปค ์ด๋ฏธ์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค ์ด๋ฏธ์ง๊ฐ Base๊ฐ ๋ ๊ฒ์ธ์ง๋ฅผ ๋ช
์ํด์ค ์ ์๋ค.
FROM ubuntu:latest
MAINTAINER
MAINTAINER ๋ช ๋ น์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ฌ๋์ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
ํ์์ ์์ ํ์์ธ๋ฐ ๋ณดํต ์ด๋ฏธ์ง๋ ๋๋ค์์ ์ ๋ ฅํ๋ค.
๋ญ. ์์ด๋ ๋ฌด๋ฐฉํ๋ค.
MAINTAINER JANG, wonik <dhslrl321@gmail.com>
RUN
RUN ๋ช ๋ น์ด๋ ํด๋น ๋์ปค ์ปจํ ์ด๋ ๋ด์ package๋ฅผ ์ค์นํ๋ค๋์ง ์ด๋ฏธ์ง ๋ด๋ถ์์ ์คํํ ๋ช ๋ น์ด๋ฅผ ๋ช ์ํ๋ ๋ช ๋ น์ด ์ด๋ค.
์๋ฅผ ๋ค์ด ๋ฆฌ์กํธ๋ฅผ ๋์ปค๋ผ์ด์ง ํ๋ค๋ฉด ์ฒ์์ผ๋ก npm install
์ ์ํํด์ผ react-script์ ๋ค๋ฅธ ํจํค์ง๋ฅผ npm์ผ๋ก installํ๊ฒ ๋๋ค.
ํน์ ubuntu ์ด๋ฏธ์ง์์ apt-get
์ ์
๋ฐ์ดํธ ํ๋ ๊ณผ์ ๋ํ RUN ๋ช
๋ น์ด๋ก ์ํํ ์ ์๋ค.
RUN ["apt-get", "install", "-y", "nginx"]
ADD
ADD ๋ช ๋ น์ด๋ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํธ์คํธ PS์์ Docker Image๋ก ๋ณต์ฌํ ๋ ์ฐ์ธ๋ค.
๋ง์ฝ ADD ํ๋ ค๋ ๋๋ ํ ๋ฆฌ๊ฐ iamge ์กด์ฌํ์ง ์์ผ๋ฉด docker๊ฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ๋ณต์ฌ๋ฅผ ์ํํ๋ค.
ADD file /dir/dir/dir/file
WORKDIR
WORKDIR์ RUN์ด๋ CMD, ์ฌ๊ธฐ์๋ ์ค๋ช ํ์ง ์์ ENTRYPOINT ์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ํํ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ธ๋ค.
Bash์์ cd ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
WORKDIR /var/www
EXPOSE
EXPOSE ๋ช ๋ น์ด๋ ์ปจํ ์ด๋๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ ํฌํธ๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉ๋๋ค.
์๋ฅผ ๋ค์ด์ ํด๋น ์ปจํ
์ด๋๋ฅผ 8917 ํฌํธ๋ก ๋
ธ์ถํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
EXPOSE 8917
CMD
CMD ๋ช ๋ น์ด๋ ๋์ปค ์ปจํ ์ด๋๊ฐ ์์ํ ๋ ์คํํ ์ปค๋งจ๋๋ฅผ ์ง์ ํ ์ ์๋ค.
RUN๊ณผ ๊ธฐ๋ฅ์ด ๋น์ทํ๋ฐ, RUN์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ์คํํ๋๋ฐ, CMD ๋ช ๋ น์ด๋ container๊ฐ ์์๋ ๋ ์คํํ๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
CMD ["nginx", "-g", "daemon off;"]