2016-08-29 28 views
0

在创建Docker镜像时,我想添加一个数据库和导入架构。当我尝试时,我得到了下面的错误。Mariadb的Dockerfile图像

160829 22时32分44秒mysqld_safe的记录到 '/var/lib/mysql/2da0903ff372.err'。 160829 22:32:44 mysqld_safe 从/ var/lib/mysql数据库启动mysqld守护进程160829 22:32:47 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ende d ERROR 2002(HY000) :无法通过 socket'/ var/run /mysqld/mysqld.sock'(2“No such file or directory”)连接到本地MySQL服务器 命令'/ bin/sh -c/bin/bash -c “在/ usr /斌/ mysqld_safe的&” & &睡眠 & mysq升-u根-e “CREATE DATABASE门户” & &的MySQL -u根 门户< /tmp/ddl.sql & & MYS QL -u根门户< /tmp/dml.sql”返回 非零码:1

下面就是我用来创建图像的Dockerfile。

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /tmp/ddl.sql 
ADD dml.sql /tmp/dml.sql 

RUN /bin/bash -c "/usr/bin/mysqld_safe &" && sleep 5 && mysql -u root -CREATE DATABASE portal" && mysql -u root portal < /tmp/ddl.sql` 

请指教我在哪里做错了?

+1

当你有一个小的样子在MariaDB的图像的入口点脚本https://github.com/docker-library/mariadb/blob/d969a465ee48fe10f4b532276f7337ddaaf3fc36/10.1/docker-entrypoint.sh。你可以看到,在第一次启动数据库被初始化。您的任务运行得很早,容器中不存在可运行的数据库服务器。 –

+0

非常感谢您的回复Rene M.实际上,我的要求是创建一个包含预填充数据库模式和数据的docker映像。有没有办法实现它? –

+0

将入口点扩展至您的需求 –

回答

1

简单地说,我需要将我的SQL文件DDL和DML一个接一个复制到/docker-entrypoint-initdb.d/*中。以下是更正后的代码。 docker-entrypoint.sh具有在我们旋转容器时执行它们的逻辑。

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /docker-entrypoint-initdb.d/ddl.sql 
ADD dml.sql /docker-entrypoint-initdb.d/dml.sql