Docker – 如何启动mysql数据库与一个容器上运行的.sql文件?

这是我第一次和docker工作。 我想为我的Java应用程序创build一个具有testing环境的远程容器。 我也需要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/* 

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

谢谢大家的回答!

如果有人遇到同样的问题,我发现了一种溶剂:

 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