[英]I Want to create a MySql database in a docker container and execute few DDL and DML Statements in it while the container is starting up
[英]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.