Docker 在终端上运行带有表的 MysQL 容器,但不带有 docker-compose.yml
Docker Runs MysQL Container With Tables On Terminal, But Not With docker-compose.yml
所以我正在尝试 运行 一个 Mysql docker 带有一些表设置的容器。看起来当我使用以下命令在终端上执行此操作时,我能够访问 mysql
终端并访问创建的表。 Dockerfile
和 initial.sql
创建表的文件在同一文件夹中:
FROM mysql:5.7.30
ENV MYSQL_DATABASE football_simulation
ENV MYSQL_ROOT_PASSWORD password
ENV MYSQL_USER alee
ENV MYSQL_PASSWORD anotherpassword
ADD initial.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Docker 命令:
docker build -t test/SNAPSHOT .
docker run --name footysimdb -p3308:3306 -d test/SNAPSHOT
docker exec -it footysimdb /bin/bash
登录到 mysql 终端并访问表:
mysql -ualee -panotherpassword
use football_simulation;
show tables;
这很好。我现在正在尝试使用 docker-compose.yml
来简化它。但是,运行ning docker-compose up
在同一目录中 docker-compose.yml
上不起作用:
version: '3'
services:
mysql-development:
image: mysql:5.7.30
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: football_simulation
MYSQL_USER: alee
MYSQL_PASSWORD: anotherpassword
ports:
- "3308:3306"
volumes:
- initial.sql /docker-entrypoint-initdb.d/
admin:
image: adminer
ports:
- "8080:8080"
数据库 football_simulation
可在端口 8080 上访问,但表未显示。我究竟做错了什么?
你安装不正确。首先你不要使用 :
定界符。此外,您尝试执行此操作的方式看起来 initial.sql
将被解释为命名卷。如果你想将单个文件挂载到容器中的目录 docker-entrypoint-initdb.d
- 你应该使用绑定挂载。它看起来像:
./initial.sql:/docker-entrypoint-initdb.d/
因此来自当前上下文的 initial.sql
文件将作为 initial.sql
文件通过绑定安装安装到 /docker-entrypoint-initdb.d
目录中。
您可以在 offical docs 中阅读不同类型的卷。
所以我正在尝试 运行 一个 Mysql docker 带有一些表设置的容器。看起来当我使用以下命令在终端上执行此操作时,我能够访问 mysql
终端并访问创建的表。 Dockerfile
和 initial.sql
创建表的文件在同一文件夹中:
FROM mysql:5.7.30
ENV MYSQL_DATABASE football_simulation
ENV MYSQL_ROOT_PASSWORD password
ENV MYSQL_USER alee
ENV MYSQL_PASSWORD anotherpassword
ADD initial.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Docker 命令:
docker build -t test/SNAPSHOT .
docker run --name footysimdb -p3308:3306 -d test/SNAPSHOT
docker exec -it footysimdb /bin/bash
登录到 mysql 终端并访问表:
mysql -ualee -panotherpassword
use football_simulation;
show tables;
这很好。我现在正在尝试使用 docker-compose.yml
来简化它。但是,运行ning docker-compose up
在同一目录中 docker-compose.yml
上不起作用:
version: '3'
services:
mysql-development:
image: mysql:5.7.30
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: football_simulation
MYSQL_USER: alee
MYSQL_PASSWORD: anotherpassword
ports:
- "3308:3306"
volumes:
- initial.sql /docker-entrypoint-initdb.d/
admin:
image: adminer
ports:
- "8080:8080"
数据库 football_simulation
可在端口 8080 上访问,但表未显示。我究竟做错了什么?
你安装不正确。首先你不要使用 :
定界符。此外,您尝试执行此操作的方式看起来 initial.sql
将被解释为命名卷。如果你想将单个文件挂载到容器中的目录 docker-entrypoint-initdb.d
- 你应该使用绑定挂载。它看起来像:
./initial.sql:/docker-entrypoint-initdb.d/
因此来自当前上下文的 initial.sql
文件将作为 initial.sql
文件通过绑定安装安装到 /docker-entrypoint-initdb.d
目录中。
您可以在 offical docs 中阅读不同类型的卷。