Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara init Database MySql di Docker Compose

Untuk memuat file sql Anda hanya saat pertama kali dijalankan:

Anda dapat menggunakan file penulisan di bawah ini

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

Anda harus menempatkan data.sql dan schema.sql file di bawah ./docker-entrypoint-initdb.d direktori menggunakan Volumes untuk info lebih lanjut .

File SQL dalam folder ini hanya akan dimuat jika direktori data DB kosong (layanan db pertama kali dijalankan) . (yaitu) dalam kasus Anda ./mysql-data folder harus kosong

Untuk masalah kedua Anda:

Alih-alih menggunakan wait-for-it.sh , Anda dapat menggunakan healthcheck dan service_healthy . Di sini usermanagement-service akan dimulai setelah mysqldb berhasil mengeksekusi ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] dalam interval yang ditentukan. Untuk detail selengkapnya tentang healthcheck dan depend_on, lihat di sini .

Mendapat test perintah dari di sini .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Kunci asing saat hapus setel nol di bidang bukan nol

  2. dbWriteTable(..., append =T) ditimpa dalam R

  3. Serialize vs Implode

  4. ORDER BY diabaikan saat INSERT ke tabel MySQL

  5. Pemberitahuan:Indeks tidak terdefinisi:gambar - tidak dapat menemukan kesalahan