gpt4 book ai didi

docker - 有什么方法可以更改基本镜像或服务,而不必再次构建整个应用程序吗?

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

我是Docker的新手,在了解大型多级应用程序如何与Docker配合使用时遇到了一些麻烦。

我想使用Visual Studio Asp .Net核心,并有几个问题:

  • 如果我对一项服务进行了微不足道的更改,是否需要构建整个应用程序并对其进行新镜像?
  • 我应该如何通知用户更改?
  • 如果进行一些小的更改,是否必须重新部署整个应用程序?
  • 如果生产镜像无法访问源代码,开发人员应如何更改生产镜像?
  • 如果我的客户端不愿意为其数据库建立容器,我可以使用docker网络与该外部SQL Server建立连接吗?
  • 最佳答案

    If I make a trivial change to one service do I need to build the whole application and make a new image of it?

    Do I have to deploy the whole app again in case of a little change?


    对于Dockerfile中的每个步骤,Docker都会生成一个中间容器。如果您使用与之前相同的方式,则使用此缓存的中间容器。如果您更改命令(例如,添加软件包,复制新的源代码行...),则此步骤将产生一个新的中间容器。此后的每个步骤都在新的中间容器上运行-因此无法使用任何缓存。
    所以是的,您必须。但是您可以使用中间容器和多阶段构建来优化构建(请参阅链接)。

    How I am suppose to inform user of the change?


    首先:使用标签进行版本控制。但是如何通知是您的用例的问题,而不是docker的问题。它与发布新的“常规”软件版本相同。
    可能您有CI-管道,并且可以自动执行此步骤。或者,您可以访问客户系统,并可以自动部署新容器。

    if my client is not willing to make a container of their database can I use a docker network to make a connection with that external SQL server?


    Docker Networks用于Docker容器之间的(隔离)通信。您可以使用“常规”方式从客户端连接到外部数据库。可能您必须在容器外部发布端口(请参阅docker引用)。并且请注意,地址 localhost是在容器内部而不是系统内部引用的。
    这篇博客文章可能对您有帮助:
    [1] https://andrewlock.net/caching-docker-layers-on-serverless-build-hosts-with-multi-stage-builds---target,-and---cache-from/
    [2]
    https://www.busbud.com/blog/going-docker-multi-stage-builds/

    关于docker - 有什么方法可以更改基本镜像或服务,而不必再次构建整个应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232034/

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