繁体   English   中英

DOCKER_无法通过 docker-compose 运行多个服务

[英]DOCKER_Cannot run multiple services by docker-compose

我为我的项目设置了 docker compose,有 2 个服务:spring-boot 和 postgresql。 我创建了 Dockerfile 和 docker-compose,yml 如下:

Dockerfile:

FROM openjdk:8-jdk-alpine
MAINTAINER linhan.com
COPY target/LinhAn-0.0.1-SNAPSHOT.jar linhan-server-1.0.0.jar
ENTRYPOINT ["java","-jar","/linhan-server-1.0.0.jar"]

码头工人-compose.yml:

version: '2'

services:
  spring_boot:
    image: 'linhan'
    build: .
    container_name: api
    ports:
      - "8080:8080"
    depends_on:
      - postgres
    environment:
      - SPRING_DATASOURCE_URL=jdbc:jdbc:postgresql://localhost:5432/test_db
      - SPRING_DATASOURCE_USERNAME=user
      - SPRING_DATASOURCE_PASSWORD=123456
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
          
  postgres:
    image: 'postgres:13.1-alpine'
    container_name: db
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=123456

然后,当我在终端输入docker-compose up时,postgres 只运行,spring boot 仍然没有。

在此处输入图像描述

我在谷歌搜索解决方案,但似乎没有希望。 请帮助我,非常感谢!!!!!!!

我认为您需要更改SPRING_DATASOURCE_URL以引用您的服务名称而不是localhost 服务名称会自动解析为您的服务,因为默认情况下所有服务都是docker-composedefault_network的一部分。

      - SPRING_DATASOURCE_URL=jdbc:jdbc:postgresql://postgres:5432/test_db

另外,为了清楚起见,我建议您将端口添加到您的docker-compose postgres 服务中,以便清楚使用哪个端口,即使它是默认端口:

postgres:
    image: 'postgres:13.1-alpine'
    container_name: db
    ports:
      - "5432"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=123456

此外,另一个建议是尝试使用运行状况检查来查看您的数据库服务depends_on healthcheck 短版本将在容器Running时立即标记依赖项已完成,而不管数据库的可用性如何。

要么,或者您可以添加应用程序逻辑以在失败的情况下重试数据库连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM