sql >> Database teknologi >  >> RDS >> Mysql

Sådan starter du MySql-databasen i Docker Compose

For kun at indlæse dine sql-filer ved første kørsel:

Du kan bruge nedenstående skrivefil

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

Du skal placere din data.sql og schema.sql filer under ./docker-entrypoint-initdb.d bibliotek ved hjælp af Volumes for mere info .

SQL-filer i denne mappe vil kun blive indlæst, hvis DB's datamappe er tom (den allerførste kørsel af db-tjenesten) . (dvs.) i dit tilfælde ./mysql-data mappen skal være tom

For dit andet problem:

I stedet for at bruge wait-for-it.sh , kan du bruge healthcheck og service_healthy . Her usermanagement-service vil blive startet én gang mysqldb eksekverer ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] i det angivne interval. For flere detaljer om sundhedstjek og afhænger_on, se her .

Fik test kommando fra her .




  1. Er inkrementering af et felt i MySQL atomart?

  2. CASE-sætning i WHERE-sætning i SQL Server 2008

  3. ORA-00979:ikke et GROUP BY-udtryksproblem

  4. Objektet i klassen yii\db\Command kunne ikke konverteres til streng