如何在Docker中将卷更改为复制?

如何在Docker中将卷更改为复制?,docker,dockerfile,docker-compose,Docker,Dockerfile,Docker Compose,我的工作流程包括三个阶段: 发展 登台 生产 三个平台上的docker配置几乎相同,只有一个不同。在开发过程中,我通过VOLUME装载项目目录,而不是通过COPY复制它 现在我想知道什么是更好的练习 为每个阶段创建Dockerfile,如下所示 project/ .docker development apache-php Dockerfile vhosts.conf

我的工作流程包括三个阶段:

  • 发展
  • 登台
  • 生产
  • 三个平台上的docker配置几乎相同,只有一个不同。在开发过程中,我通过
    VOLUME
    装载项目目录,而不是通过
    COPY
    复制它

    现在我想知道什么是更好的练习

    为每个阶段创建Dockerfile,如下所示

    project/
        .docker
            development
                apache-php
                    Dockerfile
                    vhosts.conf
                mariadb
                    Dockerfile
            staging
                apache-php
                    Dockerfile
                    vhosts.conf
                mariadb
                    Dockerfile
            etc.
    
    或者有条件地将
    更改为
    复制
    ,但我不知道这应该如何工作。

    使用继承 创建一个不包含
    复制
    /
    步骤的基本映像,然后根据基本映像创建开发、测试和生产DockerFile

    例子 基本Dockerfile

    然后构建基础映像,以便其他docker文件可以引用它:
    docker build-t baseimage。

    开发文档

    构建并运行

    生产文件

    构建并运行

    有趣的 如果这样使用,卷将覆盖conatiner文件:

    docke run -it -v ~/some.txt:/some/container/folder
    

    谢谢你的回答。在这种情况下,必须在系统上准备好基本映像。我不使用dockers存储库。是否有方法指定本地Dockerfile或具有FROM的上下文?据我所知:是的,您必须在本地构建它一次。@michaelbahr“卷将覆盖容器文件”--然后我假设,如果基础映像已经包含复制步骤,它可以被稍后在构建中声明的卷覆盖?例如,通过。
    FROM myrepo:baseimage
    VOLUME someVolume
    
    FROM myrepo:baseimage
    COPY src dest 
    
    docke run -it -v ~/some.txt:/some/container/folder