[英]docker-compose up versus docker-compose run, why the latter seems not to start the services?
[英]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-compose
中default_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.