본문 바로가기
인프라

Docker-compose, FastAPI & MySQL

by 스티브 십잡스 2024. 4. 24.

폴더 구조

..
server/
    ...
    Dockerfile
mysql/
    Dockerfile
    my.cnf
    sqls/
        initialize.sql
    mysql_data/ # 컨테이너 생성 과정에서 생성.
docker-compose.yaml
  • docker-compose.yaml
    version: '3'
    services:
      backend:
        build:
          dockerfile: Dockerfile
          context: ./server
        ports:
          - '8000:8000'
        volumes:
          - ./server:/src
        environment:
          ENVIRONMENT: LOCAL
        depends_on:
          - mysql
      mysql:
        build: 
          dockerfile: Dockerfile
          context: ./mysql
        restart: unless-stopped
        ports:
          - '3306:3306'
        volumes:
          - ./mysql/mysql_data:/var/lib/mysql
          - ./mysql/sqls/:/docker-entrypoint-initdb.d/
        environment:
          MYSQL_ROOT_PASSWORD: 1234
          MYSQL_DATABASE: tablename
    클라우드 서비스나 타 서버의 데이터베이스를 연결하려면, mysql 부분을 주석 처리 및 제거하면 된다.

docker-compose 주의 사항

  • Dockerfile에서 EXPOSE한 포트를 열어줘야 한다.
  • volumes 설정은 { 현재 로컬 workdir }:{ 컨테이너 내 workdir }