gpt4 book ai didi

spring-boot - 有没有办法自动创建 Docker Image?

转载 作者:行者123 更新时间:2023-12-02 19:20:42 24 4
gpt4 key购买 nike

我需要创建 Springboot 应用程序的 Docker 镜像,我通过创建 Dockerfile 并将其构建到镜像中来实现。然后,我使用“docker run”来调出一个容器。此容器用于编写我的应用程序的所有事件。

然而,我的问题是我使用的 JAR 文件需要不断更改,这需要我每次都重新构建 Docker 镜像。此外,我需要获取之前运行的 Docker 容器的内容并将其传输到从新构建的镜像创建的容器中。

我知道这整个过程可以写成一个 Shell 脚本,并在每次我对我的 JAR 文件进行更改时执行。但是,有什么工具可以让我以一种简单的方式自动化它吗?

这是我的 Dockerfile:

FROM java:8
WORKDIR /app
ADD ./SuperApi ./SuperApi
ADD ./config ./config
ADD ./Resources ./Resources
EXPOSE 8000
CMD java -jar SuperApi/SomeName.jar --spring.config.location=SuperApi/application.properties

最佳答案

如果您需要将 JAR 文件复制到其他静态 Docker 镜像中,则可以使用绑定(bind)挂载来保存需要重复重建的情况。这允许目录从主机共享到容器中。

假设你在主机上的项目目录(JAR 文件所在的构建位置)是 /home/vishwas/projects/my_project ,并且您需要将内容放在/opt/my_project容器内。从命令行启动容器时,使用 -v旗帜:

docker run -v /home/vishwas/projects/my_project:/opt/my_project [...]

/home/vishwas/projects/my_project 下的文件所做的更改本地将立即在 container1 内可见,因此无需重建(可能无需重新启动)容器。

如果使用 docker-compose,可以使用 volumes 来表示。该容器的服务列表下的节:
volumes:
- type: bind
source: /home/vishwas/projects/my_project
target: /opt/my_project

这适用于开发,但稍后,您可能希望将 JAR 文件捆绑到镜像中,而不是从主机系统共享(因此可以将其投入生产)。到时候,只需重新构建镜像并添加 COPY Dockerfile 的指令:
COPY /home/vishwas/projects/my_project  /opt/my_project

1:值得注意的是它默认为读/写,因此容器也将能够修改您的项目文件。要以只读方式挂载,请使用: docker run -v /home/vishwas/projects/my_project:/opt/my_project:ro

关于spring-boot - 有没有办法自动创建 Docker Image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043942/

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