我还在学习如何使用Docker。我试图将Docker添加到我的Sping Boot 应用程序中,但它并不像我预期的那样顺利。
一开始,我有一个端点返回'Hello,World'。我用Docker运行应用程序,它工作了。然后,我删除了这个端点并添加了另一个端点。之后,我在应用程序中添加了一个PostgreSQL数据库并再次用Docker运行它。然而,它仍然只返回我删除的第一个端点的结果。第二个端点不存在。我不知道我错在哪里。
这是我的dockerfile
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ./target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
这是我的docker-compose.yml
version: '3'
services:
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: pfa
3条答案
按热度按时间6jygbczu1#
你没有说你是如何启动容器的。我猜你只是在使用
docker compose up
。然后你需要更新镜像:删除“旧”映像或重建在
docker compose up
之前或简单地jq6vz3qz2#
这似乎是一个docker缓存问题,在你的docker文件中:
由于这一行没有更改其名称,docker假设您的docker镜像没有更改,因此不考虑docker构建步骤。
要避免此问题,必须使用以下开关运行容器:
bwntbbo33#
Docker镜像可能无法重建:如果您在运行
docker build
后对Sping Boot 应用进行了更改,则这些更改可能尚未合并到Docker映像中。请确保在对应用进行更改后再次运行docker build
。Docker镜像可能没有运行最新版本的应用:如果您正在运行带有
docker run
的Docker镜像,请确保使用--rm标志删除否则,您可能正在运行旧版本的应用。
Docker容器可能没有链接到正确的数据库:如果您向应用添加了PostgreSQL数据库,而Docker容器没有正确链接到该数据库,则可能会出现意外行为。请仔细检查您的
application.properties
文件(或等效文件)是否具有正确的数据库凭据,以及Docker容器是否链接到正确的端口。要进一步排除故障,您可以尝试运行
docker ps
以验证容器是否正确运行,然后运行docker logs
以查看可能已记录的任何错误消息。来重建镜像并启动容器。