我有2个docker文件
1。 mysql-dockerfile
FROM mysql:5.5
EXPOSE 3306
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE ToDoList
用于构建dockerfile的命令如下
sudo docker build -t mysql-img -f mysql-dockerfile .
sudo docker run -d --name mysqlcontainer -p 3030:3306 mysql-img
2。 java-dockerfile
FROM openjdk:8-jre-alpine
EXPOSE 9090
WORKDIR /usr/src
COPY target/*.war todoApp.war
CMD ["java","-jar","todoApp.war"]
用于构建dockerfile的命令如下
sudo docker build -t java-img -f java-dockerfile .
docker run --name javacontainer -d -p 4040:9090 java-img
spring boot应用程序包含jdbc url,如下所示
spring.datasource.url = jdbc:mysql:// localhost:3030 / ToDoList
我无法启动项目,因为docker中的spring boot应用程序无法连接另一个容器中的mysql db。
我发现的一个解决方案是将两个docker容器引入一个docker网络或链接docker容器。 任何人都可以提出好的解决方案,修改的docker run命令和修改的jdbc url。答案 0 :(得分:1)
将它们放入一个网络并使用容器名称作为主机名:
docker network create foo
docker run --network=foo --name mysqlcontainer -d mysql-img
docker run --network=foo --name javacontainer -d java-img
不公开端口-网络内部容器之间自动公开端口。
要在内部连接,请使用mysqlcontainer:3306
和javacontainer:9090
。
要从主机连接,则需要端口暴露。