[Docker] Get Started Part 2. Sample Application
위의 글에서 실행시켰던 도커 파일을 보며 그 요소들을 알아보려 한다.
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
This command used the Dockerfile to build a new container image. You might have noticed that a lot of “layers” were downloaded. This is because we instructed the builder that we wanted to start from the node:12-alpine image. But, since we didn’t have that on our machine, that image needed to be downloaded.
After the image was downloaded, we copied in our application and used yarn to install our application’s dependencies. The CMD directive specifies the default command to run when starting a container from this image.
Finally, the -t flag tags our image. Since we named the image getting-started, we can refer to that image when we run a container.
The . at the end of the docker build command tells Docker that it should look for the Dockerfile in the current directory.
FROM
: Whenever possible, use current official images as the basis for your images. We recommend the Alpine image as it is tightly controlled and small in size (currently under 6 MB), while still being a full Linux distribution.
리눅스 기반의 동작을 수행하기 위해 알파인 image를 받아와 사용하는 것을 권장한다고 한다. 그리고 가능하면 official image를 사용하는 것을 권장한다. 베이스 이미지로 무엇을 사용할지 설정하는 부분인 것 같다.
RUN
: 명령들을 설정하는 부분이다.
WORKDIR
: 컨테이너 작업 디렉토리를 지정하는 부분이다. 항상 절대경로를 사용하는 것이 권장된다. 또한, RUN cd … && do-something와 같은 형식으로 동작하는 대신 WORKDIR을 사용해야 한다.
COPY
: 이미지 생성 시 파일을 복사하는 부분이다. ADD와도 기능이 유사하지만, 그보단 COPY를 쓰는 것이 권장된다. 그러나 tar과 같은 파일을 다룰때는 ADD를 사용한다.
CMD
: 이미지에 포함된 소프트웨어를 실행하는 데 사용한다.
EXPOSE
: 컨테이너가 연결을 수신하는 포트를 나타낸다.
[참고 자료]
Best practices for writing Dockerfiles | Docker Documentation
Day16-3: 도커파일(Dockerfile)이란? 작성부터 사용까지 총정리 (tistory.com)
'✨ 공부 기록 > Docker&k8s' 카테고리의 다른 글
[Docker] Docker-machine 설치 및 virtualbox에서 실행하기(Windows 10) (0) | 2022.11.07 |
---|---|
[Docker] image 빌드하고 docker hub에 push하기 (0) | 2022.10.05 |
[Docker] Get Started Part 2. Sample Application (0) | 2022.09.28 |