Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como iniciar o banco de dados MySql no Docker Compose


Para carregar seus arquivos sql apenas na primeira execução:

Você pode usar o arquivo de composição abaixo
version: '2.1'
services:

  usermanagement-service:
    build: ./UserManagementService
    restart: on-failure
    ports:
      - "7778:7778"
    depends_on:
      mysqldb:
        condition: service_healthy

  mysqldb:
    image: mysql
    volumes:
      - ./mysql-data:/var/lib/mysql
      - ./mysql-init-files:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: userdb
      MYSQL_USER: testuser
      MYSQL_PASSWORD: testuser
    ports:
      - "3600:3306"
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

Você tem que colocar seu data.sql e schema.sql arquivos em ./docker-entrypoint-initdb.d diretório usando Volumes para mais informações .

Os arquivos SQL nesta pasta serão carregados somente se o diretório de dados do DB estiver vazio (a primeira execução do serviço db) . (ou seja) no seu caso ./mysql-data a pasta deve estar vazia

Para seu segundo problema:

Em vez de usar wait-for-it.sh , você pode usar healthcheck e service_healthy . Aqui usermanagement-service será iniciado uma vez mysqldb executa com sucesso ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] no intervalo especificado. Para obter mais detalhes sobre a verificação de integridade e o Depends_on, consulte aqui .

Obteve test comando aqui .