繁体   English   中英

有没有办法自动创建 Docker Image?

[英]Is there a way to automate the creation of Docker Image?

我需要创建 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 映像中,您可以使用绑定挂载来避免重复重建的需要。 这允许将目录从主机共享到容器中。

假设您在主机上的项目目录(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下的文件所做的更改将立即在容器1内可见,因此无需重建(并且可能无需重新启动)容器。

如果使用 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

您正在寻找docker compose

您可以使用 compose 使用单个命令构建和启动容器。

暂无
暂无

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

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