Created
November 3, 2017 08:55
-
-
Save novelview9/5ad849b828469a70a655d487ea222f4e to your computer and use it in GitHub Desktop.
test.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # [๋ณ์ญ[Execellentํ Dockerfile์ ์์ฑํ๋ ๋ฒ!(1) | |
| ๋ฒ์ญ์ ์์ | |
| ์ง๋ 10์๋ถํฐ aws ์์ธ ๋ฆฌ์ ์์๋ ecs ์๋น์ค๊ฐ ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ๋์๋ค. | |
| ์ฌ์ด ์ฒ์์ผ๋ก ๋์ปค๋ฅผ ์ ํ๊ณ ecs๋ฅผ ํตํด ๋ฐฐํฌ ํ ๊ฒฝํ์ด ์์๋๋ฐ, | |
| Aws ์์ธ๋ฆฌ์ ์ถ์ ์์์ ์ง๊ธ ์ผํ๊ณ ์๋ ๊ณณ์์๋ codedeploy๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ecs๋ฅผ ํตํด ๋ฐฐํฌํ๋ ค๊ณ ํ๋ค. | |
| ๊ด๋ จํด์ ์ฌ๋ฌ ๋ฌธ์๋ค์ ์ฐพ์ ๋ณด๋ ์ค ์ฌ๋ฌ ์ข์ ์๋ฃ๋ค์ ๋ฐ๊ฒฌํ๋ค. | |
| [Docker (Compose) ํ์ฉ๋ฒ - ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑํ๊ธฐ](http://raccoonyy.github.io/docker-usages-for-dev-environment-setup/) | |
| [์ด๋ณด๋ฅผ ์ํ ๋์ปค ์๋ด์ - ๋์ปค๋ ๋ฌด์์ธ๊ฐ?](https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html) | |
| [AWS EC2 Container Service(ECS) (1) - ๊ตฌ์กฐ์ ํน์ง](http://bluese05.tistory.com/52) | |
| [AWS EC2 Container Registry(ECR) ์ด๋ ต์ง ์์์](http://bluese05.tistory.com/51) | |
| [How to write excellent Dockerfiles](https://rock-it.pl/how-to-write-excellent-dockerfiles/) | |
| ๊ทธ์ค Dockerfile์ ์์ฑํ๋ ๋ฒ๊ณผ ๊ด๋ จํ์ฌ ๋์ปค ๊ณต์ ๋ฌธ์์ ์ต์ ๋ช ์ธ๋ฅผ ๋ฐ๋ฅด๋ฉด์ bad case๋ฅผ ์๊ฐํ๊ณ ํ๋ํ๋์ฉ ์ค๋ช ํ๋ฉด์ ์ข์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ ์ณ๋๊ฐ๋ ์น์ ํ ๊ธ์ ๋ฐ๊ฒฌํ๋ค. | |
| ๋๋ฌด ์ข์ ๊ธ์ด๋ผ ๋ฒ์ญํ ์ ๋ฐ์ ์์๋๋ฐ, | |
| ๋ฒ์ญ์ ํ๋ฝํด์ค Jakub Skaลecki ๋๊ป ๋ค์ํ๋ฒ ๊ฐ์ฌ์ ์ธ์ฌ๋ฅผ ์ ํฉ๋๋ค. | |
| Prior to translation, | |
| From last October, AWS-ECS service launched in aws Seoul region. | |
| Earlier this year, I learned and used docker first time, and distributing it through ecs | |
| On that news that ecs launched in seoul region, I tried to change the distribute way of my service from github-hook & codedeploy to docker ECS | |
| I looked up several documents related to it and found many good posts. | |
| As for how to write Dockerfile, I read really good post | |
| followed up with the latest spec of the official docs of the Docker, introduced a bad case, explained one by one, and modified in a good way. | |
| This post is excellent as the title that I had to translate it into korean. | |
| Thank you again to Jakub Skaลecki for allowing me to translate this post | |
| ๋ฒ์ญ : https://rock-it.pl/how-to-write-excellent-dockerfiles/ | |
| - - - - | |
| ๋ฐ๊ฐ์ต๋๋ค. ์ ๋ ์์ฆ ๋์ปค๋ก ์ผ์ ํ๋ต๋๋ค. Dockerfile ์ ์์ฑํ๋๊ฒ์ ๋์ปค๋ก ์ผ์ ํ๊ธฐ ์ํ ๊ฐ์ฅ ํ์์ ์ธ ๋ถ๋ถ์ธ๋ฐ, ์ด ๋ถ๋ถ์ ์์ด์ ๋ช๊ฐ์ง ํ์ ๊ณต์ ํ๊ณ ์ํฉ๋๋ค. | |
| ### ๋ชฉํ๋: | |
| ์ด๋ฏธ์ง ํฌ๊ธฐ, ๋น๋์๊ฐ ๋ฐ ๋ ์ด์ด ์๋ฅผ ์ต์ํ ํ๊ณ ์ ํฉ๋๋ค. | |
| ๋น๋ ์บ์๋ฅผ ์ต๋ํ ์ฌ์ฉํ๊ณ Dockerfile ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ ํฉ๋๋ค. | |
| ์ปจํ ์ด๋๋ฅผ ์พ์ ํ๊ฒ ์ด์ฉ ๊ฐ๋ฅ ํ๋๋ก ํฉ๋๋ค. | |
| ## TL;DR (**Too long; didnโt read) | |
| ์ด ๊ฒ์๋ฌผ์ ์์์ ๋ํ ์ผ์ ๋ํ ์ค๋ช ์ผ๋ก ๊ตฌ์ฑ๋์๋๋ฐ, ๊ทธ ๋ด์ฉ์ ์์ ํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค. | |
| - `.dockerignore` ํ์ผ์ ์์ฑํ์ธ์ | |
| - ์ปจํ ์ด๋๋ ํ๊ฐ์ง ์ผ๋ง ํฉ๋๋ค. | |
| - ๋์ปค ์ ์บ์ฑ์ ์ดํดํ์ธ์. `COPY` ์ `RUN` ๋ช ๋ น์ ์ ์ ํ ์ ์ ํ ์์๋ก ์ฌ์ฉํ์ธ์. | |
| - ์ฌ๋ฌ `RUN` ๋ช ๋ น์ดํ์ ํ์ค๋ก ํฉ์น์ธ์. | |
| - ๊ฐ ๋จ๊ณ ์ดํ ๋ถํ์ํ ํ์ผ์ ๋ฐ๋ก ์ ๊ฑฐํ์ธ์. | |
| - ์ ์ ํ base image ๋ฅผ ์ฌ์ฉํ์ธ์(alpine ๋ฒ์ ์ด๋ฉด ์ถฉ๋ถํ ๊ฒ๋๋ค.) | |
| - `WORKDIR` ๊ณผ `CMD` ๋ฅผ ์ค์ ํ์ธ์. | |
| - ํ๊ฐ์ง ์ด์์ ๋ช ๋ น์ด ๋๋ ๋ฐํ์๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ ๋ฐ์ดํธ ํด์ผํ ๊ฒฝ์ฐ `ENTRYPOINT`๋ฅผ ํ์ฉํ์ธ์. | |
| - ์ปจํ ์ด๋ ์ง์ ์คํฌ๋ฆฝํธ๋ก `exec` ๋ฅผ ์ฌ์ฉํ์ธ์. | |
| - `ADD`๋ณด๋ค `COPY` ๋ฅผ ์ ํธํฉ๋๋ค. | |
| - Dockerfile ๋ด๋ถ์ ๊ธฐ๋ณธํ๊ฒฝ๋ณ์, ํฌํธ, ๋ณผ๋ฅจ์ ์ง์ ํ์ธ์ | |
| ## ์ค์ ์ ์ฉ ์์ | |
| ์ด์ ๋ง ์ ๊ฟํ๋ค์ ์ฝ์์ ๊ฒ๋๋ค. ๋๋จํฉ๋๋ค! ํ์ง๋ง ์ค์ ๋ก Dockerfiles ์ ์ด๋ป๊ฒ ์ ์ฉํ๋์ง, ๋ ์ด๋ ๊ฒ ํด์ ์ฐจ์ด์ ์ด ๋ญ๊ฐ ์๋? ๋ผ๊ณ ๋๋ฌผ์ด ๋ณผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค์. | |
| ์ ๋ ๊ฑฐ์ ๋ชจ๋ ์ค์ ์ฌ๋ก๋ค์ ๋ด์ ๊ฐ๋จํ Dockerfile ์ ์ค๋นํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฑธ ๊ณ ์ณ๋๊ฐ๊ฑฐ์์! ์์ ๋ ธ๋ ์น์ดํ๋ฆฌ์ผ์ด์ ์ ๋์ปค๋ก ๊ด๋ฆฌํ๊ณ ์ถ๋ค๊ณ ์๊ฐํด๋ด ์๋ค. ์๋๋ฅผ ๋ณด์ธ์:(`CMD` ๋ ๊ผฌ์ฌ์๊ณ ์๋๋์ง ์์๊ฒ๋๋ค, ๋จ์ง ์์์ผ๋ฟ์ ๋๋ค.) | |
| ``` | |
| FROM ubuntu | |
| ADD . /app | |
| RUN apt-get update | |
| RUN apt-get upgrade -y | |
| RUN apt-get install -y nodejs ssh mysql | |
| RUN cd /app && npm install | |
| # this should start three processes, mysql and ssh | |
| # in the background and node app in foreground | |
| # isn't it beautifully terrible? <3 | |
| CMD mysql & sshd & npm start | |
| ``` | |
| ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ฒ ์ฃ . `docker build -t wtf .` | |
| ํน์ ์ฌ๊ธฐ ๋ชจ๋ ์ค์๋ค์ ์ง์ ์ ์๋์? ์๋๊ฐ์? ์ ๊ทธ๋ผ ํ๋ ํ๋์ฉ ํจ๊ป ๊ณ ์ณ๋๊ฐ์๋ค. | |
| ## 1. .dockerignore ๋ฅผ ์์ฑํ์ธ์ | |
| ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ๋ Docker๋ ๋จผ์ `context`์ ์ค๋นํด์ผํฉ๋๋ค. ๋ค์ ๋งํด ๋ง๋๋ ๊ณผ์ ์ ํ์ํ ๋ชจ๋ ํ์ผ์ ์์งํด์ผํฉ๋๋ค. ๊ธฐ๋ณธ conext๋ Dockerfile ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ์ ํฌํจํฉ๋๋ค. ๋๊ฒ๋ .git ๋๋ ํ ๋ฆฌ, ๋ค์ด๋ก๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปดํ์ผํ ํ์ผ์ ํฌํจ์ํค๊ณ ์ถ์ง ์์๊ฒ๋๋ค. .dockerignore ํ์ผ์ .gitignore ํ์ผ๊ณผ ๊ฑฐ์ ๋๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. | |
| ``` | |
| .git/ | |
| node_modules/ | |
| dist/ | |
| ``` | |
| ## 2. ํ๋์ ์ปจํ ์ด๋์์ ํ๊ฐ์ง ์ผ๋ง ํ์ธ์ | |
| ๊ธฐ์ ์ ์ผ๋ก๋ ๋์ปค ์ปจํ ์ด๋์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์์ **ํ ์๋** ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ก ํธ์๋, ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ , ssh, supervisor๋ฅผ ํ ์ด๋ฏธ์ง์ **๋ด์ ์๋** ์์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ **๋น์ ์ ๊ดด๋กญํ๊ฑฐ์์.** | |
| - ๋์ด๋ ๋น๋ ์๊ฐ (์: ํ๋ก ํธ ์๋์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฐฑ์๋ ์ ์ฒด๋ฅผ ๊ฐ์ ๋ก ๋ค์ ์์ฑํฉ๋๋ค.) | |
| - ๋งค์ฐ ๋ฉ์นํฐ ์ด๋ฏธ์ง | |
| - ๋ง์ ์ดํ๋ฆฌ์ผ์ด์ ๋ค๋ก๋ค๋ก ๋ถํฐ ๋์ค๋ ์ด๋ ค์ด ๋ก๊ทธ ๊ด๋ฆฌ(๊ฐ๋จํ stdout์ ์ฌ์ฉํ์ง ๋ชปํฉ๋๋ค) | |
| - ์ํ์ ์ธ ์ค์ผ์ผ๋ง์ ์๊ธฐ๋ ๋ญ๋น | |
| - ์ข๋นํ๋ก์ธ์ค ๋ฌธ์ - ์ ์ ํ init ํ๋ก์ธ์ค๋ฅผ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. | |
| ์ ์กฐ์ธ์ ๊ฐ ๊ตฌ์ฑ ์์์ ๋ํด ๋ณ๋์ Docker ์ด๋ฏธ์ง๋ฅผ ์ค๋นํ๊ณ [Docker Compose](https://docs.docker.com/compose/)๋ฅผ ์ฌ์ฉํด ์์ฝ๊ฒ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋์์ ์์ํ๋ ๊ฒ์ ๋๋ค. | |
| Dockerfile์์ ๋ถํ์ํ ํจํค์ง๋ฅผ ์ ๊ฑฐํด ๋ด ์๋ค. SSH๋ [docker exec](https://docs.docker.com/engine/reference/commandline/exec/)๋ก ๋์ฒด ํ ์ ์๊ฒ ๋ค์. | |
| ``` | |
| FROM ubuntu | |
| ADD . /app | |
| RUN apt-get update | |
| RUN apt-get upgrade -y | |
| # we should remove ssh and mysql, and use | |
| # separate container for database | |
| RUN apt-get install -y nodejs # ssh mysql | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| ## 3. ์ฌ๋ฌ `RUN` ๋ช ๋ น์ดํ์ ํ์ค๋ก ํฉ์น์ธ์. | |
| ๋์ปค๋ ๋ ์ด์ด๋ก ์ด๋ฃจ์ด์ก์ต๋๋ค. ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํด ํ์์ ์ผ๋ก ์์์ผ ํฉ๋๋ค. | |
| - Dockerfile์ ๊ฐ ์ปค๋งจ๋๋ผ์ธ์ ์์ ๋ ์ด์ด๋ฅผ ๋ง๋ญ๋๋ค. | |
| - ๋ ์ด์ด๋ ์บ์๋๊ณ ์ฌ์ฌ์ฉ๋ฉ๋๋ค. | |
| - ํ ๋ ์ด์ด์ ์บ์๊ฐ ๋ฌดํจ๋ก ์ฒ๋ฆฌ ๋๋ค๋ฉด, ๊ทธ ์ดํ ๋ชจ๋ ํ์ ๋ ์ด์ด๋ค ๋ํ ๋ฌดํจ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. | |
| - ๋ช ๋ น์ด ๋ณ๊ฒฝ ํ ์๋ฅผ๋ค์ด ๋ณต์ฌํ ํ์ผ์ด ๋ค๋ฅด๊ฑฐ๋, ๋น๋ ๋ณ์๊ฐ ์ด์ ๊ณผ ๋ค๋ฅผ ๊ฒฝ์ฐ ๋ฌดํจ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. | |
| - ๋ ์ด์ด๋ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ ์ด์ด ์์ ํ์ผ์ ๋ํ๊ณ ๊ทธ ์ดํ์ ์ญ์ ํ๋ฉด, ์ด๋ฏธ์ง๋ **์ฌ์ ํ** ๊ทธ ํ์ผ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.(์ปจํ ์ด๋์์๋ ์ด์ฉํ ์๋ ์๊ฒ ์ฃ ) | |
| ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ํ์ ๋น์ ํด๋ณด๊ณ ์ถ๋ค์. | |
| https://lizclong.files.wordpress.com/2012/06/577815734_f19c326a03.jpg | |
| ๋๋ค ๋น์ ์ ์ธ๊ฒ ๋ง๋ค๊ฑฐ์์โฆ ์ ์ด๊ฒ ์๋๊ตฐ์ ํ ํ . ๋๋ค ๋ ์ด์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์ชฝ ๋ ์ด์ด๋ก ๋ค์ด๊ฐ๊ฑฐ๋ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด, ๊ทธ ์ด์ ๊ฒ๋ค์ ์์ ์ผ ํฉ๋๋ค. ์ด๊ฒ๋ง ๊ธฐ์ตํ๋ค๋ฉด ๋ชจ๋ ๊ฒ OK ์ ๋๋ค. | |
| ์ด ์์ ๋ค์ ์ต์ ํํด๋ด ์๋ค. **์ฐ๋ฆฌ๋ ๋ชจ๋ RUN ๋ช ๋ น์ด๋ฅผ ํ๋๋ก ๋ง๋ค๊ฒ๋๋ค.** ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ๋น๋๊ณผ์ ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์๋ apt-get upgrade ๋ช ๋ น์ ์ ๊ฑฐํฉ๋๋ค.(๋ฒ ์ด์ค ์ด๋ฏธ์ง์ apt-get upgrade์ ์์กด ํ๊ณ ์์ต๋๋ค.) | |
| ``` | |
| FROM ubuntu | |
| ADD . /app | |
| RUN apt-get update \ | |
| && apt-get install -y nodejs \ | |
| && cd /app \ | |
| && npm install | |
| CMD npm start | |
| ``` | |
| ๋ช ๋ น์ ๋ณ๊ฒฝ ๋จ์์ ๋ฐ๋ผ ํฉ์ณ์ผ ํ๋ค๋ ์ ์ ๋ช ์ฌํ์ธ์. ํ์ฌ ์ ์ฝ๋๋, ์์ค ์ฝ๋๊ฐ ๋ณ๊ฒฝ ๋ ๋๋ง๋ค apt-get ๋ถํฐ ์ ์ฒด Nodejs ๋ฅผ ๋ค์์ค์น ํ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์์ฑํ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ ๋๋ค. | |
| ``` | |
| FROM ubuntu | |
| RUN apt-get update && apt-get install -y nodejs | |
| ADD . /app | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| ## 4. ๋ฒ ์ด์ค ์ด๋ฏธ์ง ํ๊ทธ๋ฅผ 'latestโ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค. | |
| `latest` ํ๊ทธ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก, ๋ค๋ฅธ ํ๊ทธ๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์ ์ฉ๋ฉ๋๋ค. ๋ค์๋งํด `FROM ubuntu` ํ๊ทธ๋ `FROM ubuntu:latest` ์ ์ ํํ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ โlatestโํ๊ทธ ์์ฒด๊ฐ ์๋ฒ์ ์ด ๋์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ์ด๋๋ฌธ์ ๋น๋๊ฐ ์ค๋จ ๋ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ต์ ์ํ๋ก ์ ์งํด์ผํ๋ Dockerfile์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ํน์ ํ ํ๊ทธ๋ฅผ ์ ์ด์ฃผ์ธ์. | |
| ์์ ์์ `16.04` ํ๊ทธ๋ฅผ ์ฌ์ฉํด๋ด ์๋ค. | |
| ``` | |
| FROM ubuntu:16.04 # it's that easy! | |
| RUN apt-get update && apt-get install -y nodejs | |
| ADD . /app | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| ## 5. ๊ฐ๊ฐ *RUN* ๋จ๊ณ ์ดํ ๋ถํ์ํ ํ์ผ์ ๋ฐ๋ก ์ ๊ฑฐํ์ธ์. | |
| ์ง๊ธ๊น์ง apt-get ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , ์ปดํ์ผ์ ํ์ํ ๋ช ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ , ๋ค์ด๋ก๋ ํ ์์ถ์ ํ์์ต๋๋ค. ์ด๊ฒ๋ค์ ๋ถ๋ช ์ต์ข ์ด๋ฏธ์ง์์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐํ๋๋ก ํ๊ฒ ์ต๋๋ค. **์ฉ๋** ๋๋ฌธ์์! | |
| ์์ ์์ apt-get lists(`apt-get update`๋ช ๋ ์ ์๊ธด ๊ฒ๋ค)๋ฅผ ์ ๊ฑฐ ํด ๋ณด๊ฒ ์ต๋๋ค. | |
| ``` | |
| FROM ubuntu:16.04 | |
| RUN apt-get update \ | |
| && apt-get install -y nodejs \ | |
| # added lines | |
| && rm -rf /var/lib/apt/lists/* | |
| ADD . /app | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| ## 6. ์ ์ ํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ฌ์ฉ | |
| ์์ ์์๋ `ubuntu`์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํ์ง๋ง ์ ๊ทธ๋ฌ์๊น์? node ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ ์ถ์ ๋ `ubuntu`์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ชฉ์ ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์? ๋ ๋์ ์ต์ ์ node๊ฐ ์ด๋ฏธ ์ค์น๋์ด์๋ ํน์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. | |
| ``` | |
| FROM node | |
| ADD . /app | |
| # we don't need to install node | |
| # anymore and use apt-get | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| ๋๋ alpine ๋ฒ์ ์ ์ ํํ๋๊ฒ์ด ๋๋์ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค. (alpine์ ํฌ๊ธฐ๊ฐ ์ฝ 4MB์ ๋ถ๊ณผํ ์์ฃผ ์์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ก ์ฌ์ฉํ๊ธฐ์ ์์ฑ๋ง์ถค์ ๋๋ค.) | |
| ``` | |
| FROM node:7-alpine | |
| ADD . /app | |
| RUN cd /app && npm install | |
| CMD npm start | |
| ``` | |
| Alpine์๋ [apk](https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management)๋ผ๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์์ต๋๋ค. `apt-get`๊ณผ ์ฝ๊ฐ ๋ค๋ฅด์ง๋ง ์์ฃผ ๋ฐฐ์ฐ๊ธฐ ์ฝ์ต๋๋ค. ๋ํ `โo-cache`, `--virtual` ์ต์ ๊ณผ ๊ฐ์ ์ ๋ง ์ ์ฉํ ์ ์ฉํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.์ด์ ๊ฐ์ด ์ฐ๋ฆฌ๋ ์ด๋ฏธ์ง ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋๋ ๋ง๊ณ ๊ผญ ์๋ง์ ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ์๋ค. ๋น์ ์ ๋์คํฌ๊ฐ ๋น์ ์ ์ฌ๋ํฉ๋๋ค :) | |
| ํฌ์คํ ์ด ๊ธธ์ด์ด์ 6๋ฒ ์ดํ๋ ๋๋ฒ์งธ ๊ธ๋ก ๋น ๋ฅธ ์์ผ๋ด์ ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค. | |
| ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment