gpt4 book ai didi

docker - 容器化Spring Boot应用程序时的Docker错误

转载 作者:行者123 更新时间:2023-12-02 18:21:38 24 4
gpt4 key购买 nike

我在项目中创建了以下Dockerfile以将Spring应用程序容器化

FROM java:8

EXPOSE 8080

VOLUME /tmp

ADD ./spring-boot-app.jar /app/app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]

无论我是否尝试在ADD ./spring-boot-app.jar /app/app.jar中提供jar文件的完整项目路径,无论如何仍然会导致以下错误-

Execution failed for task ':buildDocker'. Docker execution failed Command line [docker build -t spring-boot-app:latest /Users/sh/temp/service/build/docker] returned: ADD failed: stat /var/lib/docker/tmp/docker-builder448261255/spring-boot-app.jar: no such file or directory



此外,如果有更简便的方法或替代解决方案,请提出建议。

根据评论,我在Dockerfile中进行了尝试,并能够通过以前的错误:
FROM openjdk:8-jre-alpine
ADD build/libs/*.jar app.jar
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar

但是当运行命令docker-compose up时,它没有将spring boot app容器与mysql容器链接,并没有给出通信链接失败错误。可能是因为Dockerfile ENTRYPOINT。这是docker-compose.yml:
version: '3'

services:
demo-mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: smthing
MYSQL_DATABASE: smthing
MYSQL_USER: smthing
MYSQL_PASSWORD: smthing
spring-boot-docker-webapp:
build:
context: .
dockerfile: Dockerfile
depends_on:
- demo-mysql
ports:
- 8080:8080
environment:
DATABASE_HOST: demo-mysql
DATABASE_USER: smthing
DATABASE_PASSWORD: smthing
DATABASE_NAME: smthing
DATABASE_PORT: 3306

最佳答案

好的,看来您已经走了一点,这已经成为另一个问题。如果您想通过Spring Boot应用程序与mysql通信,则需要将它们放在网络上。您可以在任意位置的docker compose文件中声明网络(我喜欢在底部做所有操作),但是对于每种服务,您都需要将服务添加到该网络。然后,您需要为Spring引导服务设置一个环境变量,该环境变量= mysql容器的容器名称。在您的情况下,mysql-demo。您需要在Spring Boot项目中更新application.properties以接受该变量,例如

MYSQL_HOST =本地主机
spring.datasource.url = jdbc:mysql:// $ {MYSQL_HOST} / YOUR-DB-NAME

这样,您的应用程序将默认为localhost,除非您传入docker compose文件中的环境变量,这将告诉您的应用程序指向与应用程序位于同一网络上的mysql容器。

关于docker - 容器化Spring Boot应用程序时的Docker错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51733944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com