我正在尝试为我的LAMP项目设置Dockerfile,但是在启动MySQL时我遇到了一些问题.我的Dockerfile上有以下行:
VOLUME ["/etc/mysql", "/var/lib/mysql"]
ADD dump.sql /tmp/dump.sql
RUN /usr/bin/mysqld_safe & sleep 5s
RUN mysql -u root -e "CREATE DATABASE mydb"
RUN mysql -u root mydb < /tmp/dump.sql
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Run Code Online (Sandbox Code Playgroud)
有关如何在Dockerfile构建期间设置数据库创建和转储导入的任何想法?
我正在尝试根据此消息/sf/answers/2040537691/中提供的指令运行带有初始化数据库的 docker mysql 容器。第一次运行后工作正常,但在第二次运行时,尝试从脚本执行 /usr/sbin/mysqld 后,出现此错误:
db_1 | 2016-03-19T14:50:14.819377Z 0 [错误] pid 10 的另一个进程正在使用 unix 套接字文件。
db_1 | 2016-03-19T14:50:14.819498Z 0 [错误] 无法设置 unix 套接字锁定文件。
...
mdir_db_1 退出,代码为 1
这可能是什么原因?
我正在尝试创建一个mysql数据库/模式,如果它尚不存在.
这是我尝试过的:
泊坞窗,compose.yml
mysql:
image: mysql:5.6.26
environment:
- MYSQL_ROOT_PASSWORD=root
command: "mysql -uroot -proot < createDB.sql"
ports:
- "3306:3306"
Run Code Online (Sandbox Code Playgroud)
createDB.sql
CREATE DATABASE IF NOT EXISTS bignibou;
Run Code Online (Sandbox Code Playgroud)
这是行不通的.如果架构不存在,那么使用docker/docker-compose创建架构的最佳方法是什么?
我们有一个基于官方wordpress图像的自定义docker图像,其中包含我们正在开发的自定义主题。我们使用Gitlab CI对该项目提供了CI / CD,并在裸机Kubernetes Cluster v1.6上部署了分支,以供审核。效果很好,但是我们正在尝试通过在部署新实例时自动化所需的手动操作来增强流程:
wp-cli具有所需的所有命令。但是如何与容器和K8S一起使用呢?我们知道有两种选择:
有预装了wp-cli的WordPress图像(例如tutum-docker-wordpress),但是我们认为这不是正确的方法。在某些时候,我们希望每天使用带有cli映像的CronJob资源来导出数据,并且我们试图使该过程尽可能通用,并且我们希望保留官方映像,因此首选第二种方法。根据我们的研究,为了实施第二种选择,我们需要实现两件事:
我们研究了几种选择,但没有完全成功:
当您在Kubernetes上部署Wordpress的审阅部署时,这似乎是一个非常常见的功能,并且应该已经有人做到了。但是我们找不到有关此用例的任何特定信息。
请根据您的建议提供最佳实现方式的最佳方法是什么?
我/docker-entrypoint-initdb.d从这个答案中发现了目录,还阅读了“如何使用这个图像”MySQL 文档的“初始化一个新实例”部分。但是当我docker-compose up在包含以下docker-compose.yml文件的目录中运行时,我的数据库没有初始化。
services:
# Use root/root as MySQL user/password credentials
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: db
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/init:/docker-entrypoint-initdb.d/:ro
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Run Code Online (Sandbox Code Playgroud)
我确认该./mysql/init目录包含一个名为init.sql. 我确认在清空./mysql/data目录并运行后docker-compose up,db创建了一个数据库。但是没有填充数据库,除非我在 Adminer 中手动执行脚本。(我单击“导入”,然后选择文件并按“执行”按钮。)
运行后docker-compose up,我在控制台输出中查找消息,这些消息表明尝试运行init.sql但找不到任何内容。
更新: MySQL 版本为 8.0.19。