如何仅在使用Dockerfile进行生产时复制文件?
我最近计划使用docker将我的应用程序部署到服务器上。我已经成功地使用docker设置了我的开发环境,并与docker compose纠缠了一段时间 我的如何仅在使用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: - .:/
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上的绑定。