gpt4 book ai didi

Docker,在生产中复制文件并在开发中使用卷

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

我是使用 docker 进行开发的新手,但想在我的最新项目中尝试它并遇到了几个问题。

我有一个场景,我想在开发模式下将当前项目目录作为卷链接到正在运行的 docker 容器,以便可以在本地完成文件更改,而无需每次都重新启动容器。为此,我有以下命令:
docker run --name app_instance -p 3100:80 -v $(pwd):/app appimage
相比之下,在生产中我想从当前项目目录中复制文件。
docker 文件中的 E.G 有 ADD . /app (使用 .dockerignore 文件忽略某些文件夹)。另外,我想挂载一个用于持久存储的卷。对于这种情况,我有以下命令:
docker run --name app_instance -p 80:80 -v ./filestore:/app/filestore appimage
我的问题是只有一个 dockerfile,对于开发命令,一个卷将安装在 /app以及使用 ADD . /app 复制的文件.我还没有测试在这种情况下会发生什么,但我假设将两者都用于同一个目的地是不正确的。

我的问题是,处理这种情况的最佳做法是什么?

我想到的解决办法:

  • 将项目文件夹挂载到与 /app 不同的路径在开发过程中忽略dockerfile在容器中创建的/app目录
  • 有两个 docker 文件,一个复制当前项目,一个不复制。
  • 最佳答案

    My problem is that with only one dockerfile, for the development command a volume will be mounted at /app and also files copied with ADD . /app. I haven't tested what happens in this scenario, but I am assuming it is incorrect to have both for the same destination.



    对于这种情况,它将执行以下操作:

    a) docker build 时,将主机服务器中的代码添加到容器中的 app 文件夹中。

    b) 当 docker run 时,将您的本地应用程序挂载到容器中的文件夹,这里将始终是您最新的开发代码。

    但它会覆盖您在 dockerfile 中添加的内容,因此这可以满足您的要求。您应该尝试一下,不需要任何复杂的解决方案。

    关于Docker,在生产中复制文件并在开发中使用卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51358402/

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