ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [오류 해결] docker-compose.yml로 데이터베이스 및 테이블 생성
    카테고리 없음 2024. 8. 19. 22:52

    문제: docker-compose.yml 파일 작성 → docker-compose up -d --force-recreate 명령어 실행 → docker container 실행 확인 (O) → database 및 table 생성 확인 (X)

     


    docker-compose.yml
    version: '3.8'
    
    services:
      mysql:
        container_name: mysql_local
        image: mysql:8.0.30
        volumes:
          - ./db/conf.d:/etc/mysql/conf.d
          - ./db/initdb.d:/docker-entrypoint-initdb.d
        ports:
          - "3307:3306"
        environment:
          - MYSQL_DATABASE=pass_local
          - MYSQL_USER={user}
          - MYSQL_PASSWORD=${password}
          - MYSQL_ROOT_PASSWORD={root_password}
          - TZ=Asia/Seoul

     

    ./db/ 디렉토리 (호스트)

     

    ./db/conf.d/custom.cnf
    [client]
    default-character-set = utf8mb4
    
    [mysqld]
    authentication-policy = mysql_native_password

     

    ./db/initdb.d/create_table.sql
    CREATE TABLE `package`
    (
        `package_seq`  int         NOT NULL AUTO_INCREMENT COMMENT '패키지 순번',
        `package_name` varchar(50) NOT NULL COMMENT '패키지 이름',
        `count`        int                  DEFAULT NULL COMMENT '이용권 수, NULL인 경우 무제한',
        `period`       int                  DEFAULT NULL COMMENT '기간(일), NULL인 경우 무제한',
        `created_at`   timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
        `modified_at`  timestamp            DEFAULT NULL COMMENT '수정 일시',
        PRIMARY KEY (`package_seq`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='패키지';

     

    ./db/initdb.d/insert_data.sql
    INSERT INTO package (package_name, count, period, created_at)
    VALUES ('Starter PT 10회', 10, 60, '2022-08-01 00:00:00'),
           ('Starter PT 20회', 20, 120, '2022-08-01 00:00:00'),
           ('Starter PT 30회', 30, 180, '2022-08-01 00:00:00'),
           ('무료 이벤트 필라테스 1회', 1, NULL, '2022-08-01 00:00:00'),
           ('바디 챌린지 PT 4주', NULL, 28, '2022-08-01 00:00:00'),
           ('바디 챌린지 PT 8주', NULL, 48, '2022-08-01 00:00:00'),
           ('인바디 상담', NULL, NULL, '2022-08-01 00:00:00');

     

     


    docker container 실행 확인

     

    docker container 접속해서 mysql database 및 table 생성되었는지 확인

    • database는 생성되었지만, table은 생성되지 않음
    docker container 로그 확인
    docker logs [container name]

     


    해결

    ./db/initdb.d/insert_data.sql 수정
    • insert_data.sql 파일 맨 위에 다음을 추가한 뒤, docker container 삭제 후 재생성하여 해결함
    CREATE DATABASE IF NOT EXISTS pass_local;
    USE pass_local;
    • MySQL 데이터베이스에 테이블이 생성된 것을 확인함

Designed by Tistory.