Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在使用Dockerfile进行生产时复制文件?_Docker_Docker Compose_Dockerfile - Fatal编程技术网

如何仅在使用Dockerfile进行生产时复制文件?

如何仅在使用Dockerfile进行生产时复制文件?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我最近计划使用docker将我的应用程序部署到服务器上。我已经成功地使用docker设置了我的开发环境,并与docker compose纠缠了一段时间 我的Dockerfile如下所示: FROM alpine # ... COPY . /app version: '3.7' services: host: build: dockerfile: .docker/Dockerfile context: . volumes: - .:/

我最近计划使用docker将我的应用程序部署到服务器上。我已经成功地使用docker设置了我的开发环境,并与docker compose纠缠了一段时间

我的
Dockerfile
如下所示:

FROM alpine

# ...

COPY . /app
version: '3.7'
services:
  host:
    build:
      dockerfile: .docker/Dockerfile
      context: .
    volumes: 
      - .:/app
# ...
docker compose.yml
文件如下所示:

FROM alpine

# ...

COPY . /app
version: '3.7'
services:
  host:
    build:
      dockerfile: .docker/Dockerfile
      context: .
    volumes: 
      - .:/app
# ...
现在的问题是:

如果我发出命令
docker compose up-d
,docker将首先将我的所有文件复制到image/app目录(这是生产所需的),然后将我的项目装载到容器/app(用于开发)中,覆盖生产工作

如果我的项目有1GB的文件,我是否要浪费时间等待docker免费复制所有这些文件

如果docker是为开发而构建的,有没有一种方法可以指示docker不要复制所有这些文件?或者我真的需要为多个场景制作多个DockerFile,比如测试/登台

如果在
Dockerfile
中有一个非常长且复杂的构建过程,如果我忘记在
Dockerproductionfile
中更改它,那么在
Dockerdevelopmentfile
中稍微更改一下会导致生产灾难,该怎么办

如果我需要为我的项目构建5到10个图像,甚至为一家公司为多个项目构建数百个图像,该怎么办

我认为那不现实

请原谅我的天真。
我真的很感谢你的建议

最佳做法是为每个环境使用单独的DockerFile最佳做法是为生产和非生产设置运行相同的单个映像。您希望这些图像什么时候会有所不同,特别是问题所暗示的根本不同?@DavidMaze可能希望在开发模式下使用一些调试工具?也许更安全的生产设置?我不确定。也许我应该试着把所有的东西捆绑在一起。谢谢。@efratevitan这太令人伤心了。再告诉一些你正在谈论的应用程序类型?1gb看起来相当多。“我要浪费时间等待docker免费复制所有这些文件吗?”你说的“免费”是什么意思?如果您希望在图像中包含它,则需要在每次更新图像时构建它。您可以为dev和prod使用不同的docker-compose.yml文件。您不需要prod上的绑定。