Docker在终端上运行带表的MysQL容器,但不是用docker-compose.yml。

问题描述 投票:0回答:1

所以我试图运行一个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端口可以访问,但表却没有显示出来。我到底做错了什么?

mysql docker docker-compose dockerfile docker-container
1个回答
1
投票

你做的挂载不正确。首先,你没有使用 : delimeter。另外,你想做的方式看起来就像 initial.sql 将被解释为命名为卷。如果您想将单个文件挂载到一个目录中,请使用 docker-entrypoint-initdb.d 在容器中,你应该使用绑定挂载。它看起来像:

./initial.sql:/docker-entrypoint-initdb.d/

所以 initial.sql 的文件将通过绑定挂载到 /docker-entrypoint-initdb.d 目录为 initial.sql 文件。

您可以在 公文.

© www.soinside.com 2019 - 2024. All rights reserved.