Springboot + Mysql dockercompose 작성

선종우·2023년 6월 21일
0

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의 내용이 컨테이너의 파일로 마운트 도니다. 마운트 위치는 /이다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN