sql >> Base de Datos >  >> RDS >> Mysql

Cómo iniciar la base de datos MySql en Docker Compose

Para cargar sus archivos sql solo en la primera ejecución:

Puede utilizar el siguiente archivo de redacción

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

Tienes que colocar tu data.sql y schema.sql archivos bajo ./docker-entrypoint-initdb.d directorio usando Volumes para obtener más información .

Los archivos SQL en esta carpeta se cargarán solo si el directorio de datos de la base de datos está vacío (la primera ejecución del servicio de la base de datos) . (es decir) en su caso ./mysql-data la carpeta debe estar vacía

Para tu segundo problema:

En lugar de usar wait-for-it.sh , puede usar healthcheck y service_healthy . Aquí usermanagement-service se iniciará una vez mysqldb ejecuta con éxito ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] en el intervalo especificado. Para obtener más detalles sobre el control de salud y depend_on, consulte aquí .

Tengo test comando desde aquí .