Java容器无法使用docker compose连接到MYSQL容器
我被赋予了一个多步骤的任务,我被卡住了 我正在尝试将Java容器连接到MYSQL容器,但我遇到了503错误Java容器无法使用docker compose连接到MYSQL容器,java,mysql,docker,maven,docker-compose,Java,Mysql,Docker,Maven,Docker Compose,我被赋予了一个多步骤的任务,我被卡住了 我正在尝试将Java容器连接到MYSQL容器,但我遇到了503错误 HTTP ERROR 503 Problem accessing /. Reason: Service Unavailable docker编写文件: version: "3.3" services: lavagna: build: . ports: - "8080:8080&qu
HTTP ERROR 503
Problem accessing /. Reason:
Service Unavailable
docker编写文件:
version: "3.3"
services:
lavagna:
build: .
ports:
- "8080:8080"
networks:
- back_net
depends_on:
- my_db
environment:
spring.datasource.url: "jdbc:mysql://my-db:3306/lavagna"
my_db:
image: mysql:5.7
ports:
- "3306:3306"
networks:
- back_net
volumes:
- $PWD/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123
MYSQL_USER: eyal
MYSQL_PASSWORD: 123
networks:
back_net:
driver: bridge
我得到了JavaSRC文件,我只是使用maven localy来构建它,并将target用于JavaDockerFile
java应用程序dockerfile:
FROM openjdk:8-jre-alpine
EXPOSE 8080
COPY ./target/. .
COPY ./entrypoint.sh .
ENV DB_DIALECT MYSQL
ENV DB_URL jdbc:mysql://localhost:3306/lavagna
ENV DB_USER "root"
ENV DB_PASS "123"
ENV SPRING_PROFILE dev
RUN apk update \
&& apk add ca-certificates \
&& update-ca-certificates && apk add openssl
RUN chmod 774 entrypoint.sh
ENTRYPOINT [ "./entrypoint.sh" ]
我认为你需要一个已经给出的评论和答案的组合。您的容器位于同一个网络上,因此它似乎归结为配置 在docker文件中,将DB_URL更新为:
ENV DB_URL jdbc:mysql://my_db:3306/lavagna
如果您使用localhost,您的容器将返回到自身,并且永远不会访问网络
在docker compose yml文件中,您的url有输入错误,请尝试更新到:
spring.datasource.url:“jdbc:mysql://my_db:3306/lavagna“
另一方面,使用取决于
不会等待服务准备就绪。它只是将开始顺序指定为:
使用Dependes_时需要注意以下几点:
Dependens_on不会在启动web之前等待db和redis“准备就绪”——只在它们启动之前。如果您需要等待服务准备就绪
MySQL可能是在您的java应用程序启动后启动的,spring会在启动时尝试连接到数据库。Hmmm?您建议如何解决此问题您正在连接字符串中使用
my db
作为主机名,但根据服务定义,主机名为my_db
。感谢您的建议,已解决此问题,但仍不起作用。。