gpt4 book ai didi

Docker 在一个容器中组合多个数据库

转载 作者:行者123 更新时间:2023-12-05 02:11:38 27 4
gpt4 key购买 nike

我想创建 Docker 容器并将 3 个数据库导入其中。我试过以下代码:

version: '3.3'
services:
web:
build:
context: ./php56
dockerfile: Dockerfile
container_name: php56
depends_on:
- db
volumes:
- ../www:/var/www/html/
ports:
- 8000:80
db:
container_name: mysql
image: mysql:5.7.21
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dkum
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
entrypoint:
sh -c "
echo 'CREATE DATABASE IF NOT EXISTS dkum_joomla; CREATE DATABASE IF NOT EXISTS dkum_test;' > /docker-entrypoint-initdb.d/init.sql;
/usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
"
volumes:
- ../sql/baze/dkum.sql:/docker-entrypoint-initdb.d/dkum.sql
- ../sql/baze/dkum_joomla.sql:/docker-entrypoint-initdb.d/dkum_joomla.sql
- ../sql/baze/dkum_test.sql:/docker-entrypoint-initdb.d/dkum_test.sql
ports:
- 6033:3306

此代码仅创建 1 个数据库 (dkum),其中填充了 dkum.sql 卷中的数据。如果我删除 dkum_joomla.sql 和 dkum_test.sql 卷,那么它会创建 3 个数据库(dkum、dkum_joomla 和 dkum_test),其中只有 dkum 数据库填充了数据。

这是我的 SQL 文件。我稍后会扩展它们。

dkum.sql

CREATE TABLE dkum_table (
DkumID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

dkum_joomla.sql

CREATE TABLE dkum_joomla_table (
DkumJoomlaID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

dkum_test.sql

CREATE TABLE dkum_test_table (
DkumTestID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

最佳答案

与其在 docker-compose 文件中创建额外的数据库,不如在 SQL 文件中创建它们:

version: '3.3'
services:
web:
build:
context: ./php56
dockerfile: Dockerfile
container_name: php56
depends_on:
- db
volumes:
- ../www:/var/www/html/
ports:
- 8000:80
db:
container_name: mysql
image: mysql:5.7.21
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dkum
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
volumes:
- ../sql/baze/dkum.sql:/docker-entrypoint-initdb.d/dkum.sql
- ../sql/baze/dkum_joomla.sql:/docker-entrypoint-initdb.d/dkum_joomla.sql
- ../sql/baze/dkum_test.sql:/docker-entrypoint-initdb.d/dkum_test.sql
ports:
- 6033:3306

dkum.sql

CREATE TABLE dkum_table (
DkumID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

dkum_joomla.sql

CREATE DATABASE IF NOT EXISTS dkum_joomla;
USE dkum_joomla;

CREATE TABLE dkum_joomla_table (
DkumJoomlaID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

dkum_test.sql

CREATE DATABASE IF NOT EXISTS dkum_test;
USE dkum_test;

CREATE TABLE dkum_test_table (
DkumTestID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

关于Docker 在一个容器中组合多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57239609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com