1. docker-compose.yml
1) version: "1.0"
2) services:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: 패스워드
MYSQL_USER: 사용자명
MYSQL_PASSWORD: 패스워드
MYSQL_DATABASE: 디비명
6) expose:
- 3306
7) volumes:
- ./db_data:var/lib/mysql
app:
image: springapp
3) build: .
4) depends_on:
db:
condition: service_completed_successfully
7) ports:
- 8080:8080
5) environment:
URL: JDBC url
USER: 사용자명
PASSWORD: 패스워드
- 1) depreacated되었다. 큰 의미는 없다.
- 2) docker-compose의 root element이다. key로는 serevice name을 가지고 각 value로는 service에 대한 정의가 담긴다. (서비스 시작 시점에 적용될 설정들)
* 3) 각 서비스는 build를 key로 가질 수 있다. (build 관련 ref)
- 4) depends_on을 이용해 이미지 생성,종료 순서를 지정할 수 있다. 단순히 의존하는 서비스명만 나열할 수도 있지만, 옵션에 따라 더 세밀하게 조절할 수도 있다.(나의 경우 default 옵션을 사용했더니 mysql 컨테이너가 완전히 생성되기 전에 spring 컨테이너가 생성되며 오류가 발생했다)
- 5) 컨테이너에 설정할 환경변수를 지정한다. map이나 배열 형태 모두 가능하다.
environment:
- RACK_ENV=development
- SHOW=true
- USER_INPUT
- env_file을 이용해 파일 단위 환경설정 파일을 넘길 수도 있다. 우선순위는 environment에 있다.
- 6) 컨테이너의 노출 포트를 지정한다. expose를 설정했다고 포트가 publish되는 것은 아니다.
- 7) 외부로 노출시킬 컨테이너 포트를 지정한다.
ports:
- "3000" -> 호스트의 모든 인터페이스에 bind된다., host는 남아있는 임의의 포트를 컨테이너에 bind한다.
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "8000-9000:80"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "6060:6060/udp"
- 8) 서비스 컨테이너에서 접근 가능한 host 경로나 볼륨명을 지정한다.
- command를 이용해 image의 CMD를 덮어쓸 수 있다.
- entrypoint를 이용해 이미지의 entrypoint를 덮어쓸 수도 있다.
2. 이외 설정들
- cofings를 사용하면 config의 내용이 컨테이너의 파일로 마운트 도니다. 마운트 위치는 /이다.