簡體   English   中英

mysql docker容器:自動創建數據庫、用戶並執行命令

[英]mysql docker container : create database, user and execute commands automatically

我已經按照這篇文章使用 docker-compose 自動創建數據庫和表來在我的容器啟動時執行腳本。 創建了數據庫並創建了我在 docker-compose 中定義的用戶,我的數據庫沒有像我在 sql 腳本中設置的那樣填充。

誰能幫我?

這是碼頭文件:

FROM phpmyadmin
COPY DockerCreateAllTablesDBwithData.sql /docker-entrypoint-initdb.d/initdb.sql

這是 docker-compose.yml:

---
version: '3.7'

services:
  db:
    image: mysql:8-debian
    container_name: db
    restart: always
    networks:
      - network_app
    cap_add:
      - SYS_NICE
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=CantineTest
      - TZ='Europe/Paris'
    volumes:
      - mydatavolume:/var/lib/mysql
  phpmyadmin:
    build:
      context: .
      dockerfile: ./Dockerfile
    container_name: phpmyadmin
    restart: always
    ports:
      - 8080:80
    depends_on:
      - db
#    volumes:
#      - ./data/certbot/conf:/etc/letsencrypt
    networks:
      - network_app
    environment:
      - PMA_HOST=db
      - TZ="Europe/Paris"
#volumes:
#  frontendbuild:
#    name: frontendbuild
networks:
  network_app:
    name: network_app
volumes:
  mydatavolume:

這是 DockerCreateAllTablesDBwithData.sql:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

--
-- Bdd :  `CantineTest`
--

create database CantineTest;
use CantineTest;

DROP TABLE IF EXISTS `Alias`;
CREATE TABLE `Alias` (
  `AliasID` smallint(5) UNSIGNED NOT NULL,
  `AliasName` varchar(50) NOT NULL,
  `AliasDescription` varchar(255) DEFAULT NULL,
  `AliasMailingList` mediumtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

您已將 DB 腳本添加到錯誤的位置。 必須添加到您擁有 MySQL 的 docker-composer 中。 添加為卷

volumes:
  - ./mysql-dump:/docker-entrypoint-initdb.d 

在您擁有 docker-compose 的位置創建一個 mysql-dump 文件夾,並將您的 SQL 腳本添加到其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM