Java容器无法使用docker compose连接到MYSQL容器

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

我被赋予了一个多步骤的任务,我被卡住了

我正在尝试将Java容器连接到MYSQL容器,但我遇到了503错误

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
。感谢您的建议,已解决此问题,但仍不起作用。。