【发布时间】:2022-11-18 13:57:45
【问题描述】:
我正在关注docs of mariadb。它说如果在 /docker-entrypoint-initdb.d 中找到 .sql 就应该创建数据库。 我正在 Oracle Virtual BOX VM 中的 Ubuntu 服务器上工作。 我的 docker-compose.yml 看起来像这样:
version: "3.9"
services:
db:
image: mariadb:10
container_name: mariadb
ports:
- 3306:3306
environment:
- MYSQL_USER=user
- MYSQL_ROOT_PASSWORD=password
- MYSQL_PASSWORD=password
- MARIADB_DATABASE=database // tried with MYSQL_DATABASE and without this line
volumes:
- "db_data:/var/lib/mysql"
- ".database/initdb/dump.sql:/docker-entrypoint-initdb.d/initdb.sql"
# networks:
# - network
volumes:
db_data:
我的 initdb.sql 看起来像这样(最终应该工作的那个看起来不同但出于简单性我将它减少到最大值并且甚至不能这个简单的工作):
CREATE DATABASE NEWDB;
老实说,我现在不知道去哪里看或做什么,因为我到处寻找可能的解决方案,我发现这是应该工作的最低限度的例子。
我尝试重新启动 docker,删除所有容器、图像和卷,将 initdb.sql 修改为:
CREATE USER user WITH PASSWORD 'password';
CREATE DATABASE IF NOT EXISTS database;
GRANT ALL PRIVILEGES ON DATABASE database TO user;
但是当我 docker compose up 时数据库没有初始化。 我查看了容器,发现 initdb.sql 在那里。
编辑:它以某种方式起作用,当我 docker compose up with MARIADB_DATABASE=database 但脚本 initdb.sql 仍然不起作用时,这是最重要的事情,因为它设置了整个数据库。 (注意:最重要的是,我想设置另一个运行 PHP 脚本的 PHP 容器,以收集存储在上述 MariaDB 容器中的数据。MariaDB 与一个网站相连,该网站从容器)
【问题讨论】:
标签: docker docker-compose oraclevm