Docker - 如何使用容器上运行的.sql文件启动mysql数据库?

时间:2017-11-22 11:48:05

标签: mysql docker

这是我第一次使用docker。我想为我的java应用程序创建一个带有测试环境的远程容器。我还需要mysql数据库。一切都应该在一个容器上运行(这是一个要求,而不是我的想法)。

我需要使用.sql文件启动数据库(让我们说file.sql与Dockerfile位于同一目录中)

非常感谢您的帮助:)

这是我的Dockerfile的一部分:

FROM ubuntu:16.04

#Install JRE
RUN     apt-get update && apt-get install default-jre -y

#Install JDK

RUN     apt-get update && apt-get install default-jdk -y

#Install Maven

RUN     apt-get update && apt-get install maven -y

#Install wget
RUN     apt-get update && apt-get install wget -y
#\&& rm -rf /var/lib/apt/lists/*


#Install unzip

RUN     apt-get update && apt-get install unzip -y

#Install glassfish

RUN     mkdir -p /opt && cd opt/
RUN     wget http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip
RUN     unzip glassfish-4.1.1.zip

#Install mysql

ENV     MYSQL_USER=mysql\ MYSQL_DATA_DIR=/var/lib/mysql \ MYSQL_RUN_DIR=/run/mysqld \ MYSQL_LOG_DIR=/var/log/mysql

RUN     apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server \&& rm -rf ${MYSQL_DATA_DIR} \&& rm -rf /var/lib/apt/lists/*

2 个答案:

答案 0 :(得分:-1)

首先使用ADD复制图像中的.sql文件。然后添加RUN命令以使用mysql命令恢复数据库。

答案 1 :(得分:-1)

谢谢大家的答案!

如果有人在这里遇到同样的问题,我发现了一个解决方案:

RUN     echo "mysql-server mysql-server/root_password password password" | debconf-set-selections
RUN     echo "mysql-server mysql-server/root_password_again password password" | debconf-set-selections
RUN     apt-get update && apt-get -y install mysql-server && service mysql start

如果mysql仍未启动,请检查/etc/docker/daemon.json,确保它看起来像这样:

{ "storage-driver":"overlay2" }

如果您没有执行此文件:

mkdir -p /etc/docker

echo '{"storage-driver":"overlay2"}' > /etc/docker/daemon.json

systemctl restart docker.service