일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링 시큐리티
- mysql
- vm
- 데이터베이스
- CI/CD
- Spring
- 스프링 배치
- 영속성 컨텍스트
- computer science
- HTTP
- Spring Security
- 백엔드
- spring cloud
- JPA
- ORM
- 배포
- virtualization
- Container
- web server
- Java
- CS
- 자바
- 스프링
- 가상화
- 웹 서버
- 컨테이너
- 도커
- 스프링 부트
- spring batch
- spring boot
- Today
- Total
개발 일기
[Docker] 도커파일(Dockerfile) 작성하기 본문
dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일로 여러 키워드를 사용하여 dockerfile을 작성하여 빌드를 보다 쉽게 수행할 수
있다.
Dockerfile Instruction
FROM
From 키워드를 사용하여 베이스가 되는 이미지를 지정한다.
주로 OS 이미지나 런타임 이미지를 지정한다.
ex) 스프링 프로젝트의 경우 자바 런타임
RUN
이미지를 빌드할 때 사용하는 커맨드를 설정할 때 사용
ADD
이미지에 호스트 파일이나 폴더를 추가하기 위해 사용
만약 이미지에 복사하려는 디렉토리가 존재하지 않으면 docker가 자동 생성
COPY
호스트 환경의 파일이나 폴더를 이미지 안으로 복사하기 위해 사용
'ADD'와 동일하게 동작하지만 가장 확실한ㄴ 차이점은 URL을 지정하거나, 압축파일을 자동으로 풀진 않음
EXPOSE
이미지가 통신에 사용할 포트를 지정할 때 사용
ENV
환경 변수를 지정할 때 사용
여기서 설정한 변수는 $name, ${name}의 형태로 사용할 수 있다.
추가로 아래와 같은 문법도 가능하다.
-${name:-else} : name이 정이ㅡ가 안되어 있다면 'else'가 사용됨
CMD
도커 컨테이너가 실행될 때 실행할 커맨드를 지정
'RUN'과 비슷하지만 CMD는 도커 이미지를 빌드할 때 실행되는 것이 아니라 컨테이너를 시작할 때 실행된다는 것이 다름
ENRYPOINT
CMD와 비슷한데 도커 이미지가 실행될 때 사용되는 기본 커맨드를 지정 (강제)
WORKDIR
RUN, CMD, ENTRYPOINT 등을 사용한 커맨드를 실행하는 디렉토리를 지정
-w 옵션으로 오버라이딩 가능
VOLUME
퍼시스턴스 데이터를 저장할 경로를 지정할 때 사용
호스트의 디렉토리를 도커 컨테이너에 연결
주로 휘발성으로 사용되면 안되는 데이터를 저장할 때 사용
ex) MYSQL 등 데이터 들
'DevOps > Docker Kubernetes' 카테고리의 다른 글
[Kubernetes] 쿠버네티스(Kubernetes) 교양 쌓기 (0) | 2024.05.21 |
---|---|
[Docker] 스프링 부트 Dockerfile 작성부터 EC2 환경에 배포까지 (0) | 2024.05.19 |
[Docker] 도커 명령어 정리 (0) | 2024.05.14 |
[Docker] 도커란? - 도커 개념과 구조 (0) | 2024.05.14 |
[Docker] 가상화(Virtualization) 및 Virtual Machine과 Container 차이 (0) | 2024.05.14 |