Dockerfile
직접 이미지를 생성할 수 있게 해주는 파일
명령어
FROM [이미지명]:[태그명]
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너 파일 위치 경로]
ENTRYPOINT [명령문1, 명령문2, 명령문..]
RUN [명령문]
WORKDIR [작업 디렉토리로 사용할 절대 경로]
EXPOSE [포트번호]
FROM : 베이스 이미지 생성한다.
베이스 이미지 : 초기 기본 세팅, 쉽게 말해서 기본 프로그램 느낌이다.
JAVA에 한해서는 JDK가 베이스이미지가 되겠다.
COPY : 호스트 파일에 있는 파일을 컨테이너에 복사
ENTRYPOINT : 컨테이너 생성시 최초 실행때 수행하는 명령어
RUN : 이미지 생성과정에서 명령어를 실행시켜야 할 때 사용
ex) npm install, apt update, apt install 등
WORKDIR : 작업 디렉터리로 Dockerfile을 통해 생성되는 파일들을 특정 폴더에 정리해 관리가 용이, 컨테이너 기반 위치
EXPOSE : 컨테이너 내부 사용 포트 문서화
Docker Compose
여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 관리
한 번에 여러개 컨테이너를 띄울 수 있고,
상태 체크 등으로 의존관계를 설정할 수 있다.
또한 컨테이너 실행시 필요한 명령어들을 컴포즈에 미리 입력할 수 있음
compose.yml 로 yml 파일 형식이다.
services: // 하나의 컨테이너 정의
main-server: // 서비스 정의
build: . // 현재 디렉토리에 있는 Dockerfile을 사용해 이미지 빌드
ports: // 포트
- 8080:8080
depends_on: // 의존관계 아래 설정한 조건들이 참일때, 해당 서비스가 실행됨
mysql-db: // mysql-db 서비스가 정상상태일 때
condition: service_healthy
redis-cache-server:
condition: service_healthy
mysql-db:
image: mysql:8.4.5
environment: // 환경 변수 설정
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: zypt
volumes: // 볼륨 설정
- ./mysql_data:/var/lib/mysql
ports:
- 3307:3306
healthcheck: // 정상상태 체크
test: ["CMD", "mysqladmin", "ping"] // Mysql에 ping 명령을 보내 살아 있는지 체크
interval: 5s // 5초마다 체크
retries: 10 // 10번 시도
redis-cache-server:
image: redis
ports:
- 6379:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
retries: 10
'Back-End' 카테고리의 다른 글
Docker 기본 개념 (0) | 2025.07.02 |
---|