sql >> Databáze >  >> RDS >> Mysql

Jak iniciovat databázi MySql v Docker Compose

Pro načítání souborů SQL pouze při prvním spuštění:

Můžete použít níže uvedený soubor pro psaní

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

Musíte umístit svůj data.sql a schema.sql soubory pod ./docker-entrypoint-initdb.d adresář pomocí Volumes další informace .

Soubory SQL v této složce budou načteny pouze v případě, že datový adresář DB je prázdný (úplně první spuštění služby db) . (tj.) ve vašem případě ./mysql-data složka by měla být prázdná

K vašemu druhému problému:

Místo použití wait-for-it.sh , můžete použít healthcheck a service_healthy . Zde usermanagement-service bude spuštěn jednou mysqldb úspěšně provede ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] ve stanoveném intervalu. Další podrobnosti o Healthcheck a Depend_on naleznete zde .

Mám test příkaz z zde .




  1. Jaký je přesně rozdíl mezi primárním indexem a sekundárním indexem?

  2. MySQL Trigger - smazat po aktualizaci

  3. Nesprávná hodnota řetězce:'\xEF\xBF\xBD' pro sloupec

  4. Co je tabulka seskupených indexů?