【发布时间】: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