[Docker] DockerFile/Docker-Compose
Docker File
vi Dockerfile
FROM
ENV SPRING_HOME /
Info
FROM
어떤 이미지를 기반으로 할지 설정함. Docker 이미지는 기존에 만들어진 이미지를 기반으로 생성함. <이미지 이름="">:<태그> 형식으로 설정태그>이미지>
ENV
해당 이미지의 환경변수를 지정해주는 옵션
MAINTAINER
메인테이너 정보
RUN
셀 스크립트 혹은 명령
실행베이스 이미지에 있는 /bin/sh 실행 파일을 사용하여 명령어를 실행한다.
VOLUME
호스트와 공유할 디렉토리 목록
host어디에 저장될 것인지는 설정 불가능 host의 특정 디렉터리와 연결하려면
docker run -v {host directory}}:{container directory} dockerfile
ENTRYPOINT
컨테이너가 시작되었을 때 첫번 째로 실행되는 명령어 (CMD와 동일)
exec 형식 : ENTRYPOINT ["executable", "param1", "param2", ...]
shell 형식 : ENTRYPOINT {command} {param1} {param2} ...
shell 형식은 /bin/sh 를 거친 후에 실행된다.
반면에 exec 형식은 script를 바로 실행하기 때문에 exec 형식을 추천한다.
# example
# yum install -y rdate
ENTYPOINT ["yum","install","-y","rdate"]
COPY / ADD
호스트 내부에 있는 파일을 이미지 내부로 복사. Dockerfile 파일이 존재하는 경로에서 하위에 있는 파일만 복사 가능. 따라서 Dockerfile을 작성할 때 별도의 폴더를 생성하고, 그 안에 이미지 생성에 필요한 파일들을 넣어둔다.
- ADD 압축 파일은 압축을 해제하여 복사한다.(Auto-extraction) URL을 통해 파일을 복사할 수 있다. (Remote-URL) ADD 보다 COPY가 직관성이 높다.
USER
컨테이너 내에서 명령어를 실행시키는 사용자를 설정한다.
CMD
컨테이너가 시작되었을 때 실행할 실행 파일 또는 셸 스크립트
WORKDIR
CMD에서 설정한 파일이 실행될 디렉터리명령어 RUN, CMD, ENTRYPOINT, COPY 등이 실행될 Directory를 지정
EXPOSE
호스트와 연결할 포트 번호
docker-compose 설치
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
# chmod +x /usr/bin/docker-compose
# ls -l /usr/bin/docker-compose
# docker-compose --version