【问题标题】:Problems with configuring mysql/mysql-server dockerfile配置 mysql/mysql-server dockerfile 的问题
【发布时间】:2018-05-03 00:57:54
【问题描述】:

我是应用计算机科学专业的二年级学生,在配置 mysql docker 时遇到了一些问题。 作为一项任务,我们必须创建 2 个 docker 映像(1 个使用 apache/php 和一个简单的 php 网页,另一个使用 mysql)。我已经创建了 apache/php docker,这并不难,但我在 mysql 上挣扎了很多。

文件

./Dockerfile
./test.sql

Dockerfile

FROM mysql/mysql-server

ENV MYSQL_ROOT_PASSWORD=lindert

RUN mkdir /usr/sql
RUN chmod 644 /usr/sql
ADD test.sql /usr/sql/test.sql

run MYSQL -u root -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE \
shippingdb" && mysql -u root -p${MYSQL_ROOT_PASSWORD} shippingdb < 
/usr/sql/test.sql 

当我运行 'docker build .'弹出这个错误:

mysql: [WARNING] Using a password on the command line interface can be 
insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (2)

我不知道如何解决这个问题,我已经在谷歌上搜索了 3 个小时,但我还没有找到答案,如果有人可以提供帮助,那就太好了。 谢谢!

【问题讨论】:

  • 我不相信 sql 服务会在构建过程中运行。您可能希望从 dockerfile 中删除最后一个 RUN 命令并让 php 容器连接并初始化数据库,至少在我的经验中,这通常不是您在构建步骤中要做的事情。
  • 我在 postgres 上也有过类似的经历,但这可能会让你朝着正确的方向前进。我在构建过程中试图做这样的事情,但当然 postgres 在构建过程中没有运行。在这里,您可能正在尝试执行 mysql 命令,但 mysql 直到您实际运行映像时其 docker-entrypoint.sh 触发后才真正运行。

标签: mysql linux docker mariadb dockerfile


【解决方案1】:

将你的 sql 文件挂载到 '/docker-entrypoint-initdb.d' 路径,它将被导入。将您的“CREATE DATABASE”调用放入 sql 文件中

IE:工作/根目录中的 Dockerfile 和 sql 文件

FROM mysql/mysql-server

ENV MYSQL_ROOT_PASSWORD=lindert

RUN mkdir /usr/sql
RUN chmod 644 /usr/sql
VOLUME ./ /docker-entrypoint-initdb.d

官方 mysql 镜像的 docker hub 页面上提到了这一点 https://hub.docker.com/_/mysql/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2014-06-17
    • 2016-06-26
    • 2015-06-21
    • 2015-01-08
    • 2011-01-07
    • 2019-03-06
    • 1970-01-01
    相关资源
    最近更新 更多