所以我试图运行一个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
现在。然而,运行 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端口可以访问,但表却没有显示出来。我到底做错了什么?
你做的挂载不正确。首先,你没有使用 :
delimeter。另外,你想做的方式看起来就像 initial.sql
将被解释为命名为卷。如果您想将单个文件挂载到一个目录中,请使用 docker-entrypoint-initdb.d
在容器中,你应该使用绑定挂载。它看起来像:
./initial.sql:/docker-entrypoint-initdb.d/
所以 initial.sql
的文件将通过绑定挂载到 /docker-entrypoint-initdb.d
目录为 initial.sql
文件。
您可以在 公文.