개인 프로젝트를 진행하면서 docker의 쓰임새를 알게 되었고 다른 블로그의 글들을 보면서
필요한 코드들만 뽑아서 쓰는게 아닌 이해하면서 쓰고 싶었기에 문법 정리에 대한 글을 작성해보려고 합니다.
FROM app
FROM app:test
# app이라는 Container image를 base로 사용합니다.
# 태그가 없으면 latest를 사용합니다.
RUN pip install -r requirements.txt
RUN echo "Hello world" > /tmp/hello
RUN apt-get install -y niginx
RUN git clone https://github.com/test
# RUN <명령> 형식이며 셸 스크립트 구문을 사용할 수 있습니다.
# FROM의 이미지에 포함된 /bin/sh 실행 파일을 사용합니다.
RUN ["/user/local/bin/test", "--help"]
RUN ["test", "param1", "param2"]
RUN ["apt-get", "insatll", "-y", "nginx"]
# RUN ["<실행 파일>", "<매개 변수1>", "<매개 변수2>"] 형식입니다.
# FROM의 이미지에 있는 /bin/sh 실행 파일을 사용하지 않습니다.
CMD ["c://nginx/bin/test.exe", "-w"] # exec form
CMD c://nginx/bin/test.exe -w # shell form
CMD bundle exec ruby test.rb
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
# Container가 실행되었을때 실행되는 명령어를 정의합니다.
# 여러 개의 CMD가 존재할 경우 가장 마지막 CMD만 실행됩니다.
ENTRYPOINT touch /home/test/test.txt
# ENTRYPOINT <명령> 형식이며 셸 스크립트 구문을 사용할 수 있습니다.
# FROM의 이미지에 포함된 /bin/sh 실행 파일을 사용합니다.
ENTRYPOINT ["/home/test/test.sh", "--hello=1", "--world=2"]
# ENTRYPOINT ["<실행 파일>", "<매개 변수1>", "<매개 변수2>"] 형식입니다.
# FROM의 이미지에 있는 /bin/sh 실행 파일을 사용하지 않습니다.
WORKDIR /usr/app
WORKDIR /path/to/workdir
# RUN, CMD, ENTRYPOINT에서 설정한 실행파일의 실행될 디렉토리를 설정합니다.
# container 내에서 경로를 지정하게 됩니다.
COPY test.html /home/
COPY ['hello.html', '/home/']
# COPY <복사할 파일 경로> <이미지에서 파일이 위치할 경로> 형식입니다.
# <복사할 파일 경로>에 디렉토리를 지정하면 디렉토리의 모든 파일을 복사합니다.
ADD test.html /home/
ADD http://example.com/hello.txt /hello.txt
ADD hello.sh /hello.sh
# COPY 비슷한 역할을 하지만 ADD는 외부 URL, tar파일에서도 파일을 추가할 수 있습니다.
# COPY 보다 강력한 역할이기에 특별한 일이 아니라면 COPY를 자주 사용합니다.
EXPOSE 80
EXPOSE 27017
# EXPOSE는 호스트와 연결할 포트번호를 설정합니다.
# docker run의 --expose 옵션과 동일합니다.
제가 계속 사용하는 명령어들이 있으면 추가적으로 작성하겠습니다
'DevOps > Docker' 카테고리의 다른 글
docker 명령어 (0) | 2021.12.08 |
---|