这是我第一次使用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/*
答案 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