2016-08-29 45 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