以下情况:
我想用docker-compose两个容器来构建。一个是MySQL,另一个是使用springboot执行的.war文件,该文件依赖于MySQL并且需要一个有效的数据库。构建mysql容器后,我想在构建另一个容器之前用mysqldump文件填充数据库。
我的第一个想法是将它作为
放在我的MySQL Dockerfile中 #RUN mysql -u root -p"$MYSQL_ROOT_PASSWORD"' < /appsb.sql
但是它当然想在构建时执行它。
我不知道如何在docker-compose文件中以Command的方式执行此操作,也许可行。还是我需要构建一个脚本?
docker-compose.yml
version: "3"
services:
mysqldb:
networks:
- appsb-mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=appsb
build: ./mysql
app-sb:
image: openjdk:8-jdk-alpine
build: ./app-sb/
ports:
- "8080:8080"
networks:
- appsb-mysql
depends_on:
- mysqldb
networks:
- appsb-mysql:
用于mysqldb的Dockerfile:
FROM mysql:5.7
COPY target/appsb.sql /
#RUN mysql -u root -p"$MYSQL_ROOT_PASSWORD"' < /appsb.sql
其他springboot应用程序的Dockerfileb
:FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/appsb.war /
RUN java -jar /appsb.war
答案 0 :(得分:0)
这是MySQL容器Setting up MySQL and importing dump within Dockerfile的类似问题(在启动时加载dump.sql)。
选项1:通过Dockerfile中的命令导入。
选项2:执行程序。来自docker-compose.yml的bash脚本
选项3:执行程序。来自docker-compose.yml的导入命令