Van*_*uan 5 development-environment production-environment test-environments docker dockerfile
假设您有 Web 应用程序和一些工作流程执行器:
我们如何构建分层图像以使这些工作流程执行器最有效地工作?我所说的“有效”是指“运行最快、写入最少”。
答案可能很简单:只需创建 4 个Dockerfile
依赖于另一个的 s 即可。
您可以添加一个卷来共享源部分的构建。问题是您是否希望结果资产包含在图像中或每次都从源构建它。
创建 4 个文件夹,Dockerfile
每个文件夹都有。
生产
production/Dockefile
:
FROM # put server here
COPY # put config here
# some other option
# volume sharing?
Run Code Online (Sandbox Code Playgroud)
建造
build/Dockerfile
:
# install dependencies
ADD # add sources here
RUN # some building script
Run Code Online (Sandbox Code Playgroud)
调试
debug/Dockefile
:
# ideally, configure production or build image
Run Code Online (Sandbox Code Playgroud)
测试
test/Dockefile
:
FROM # import production
# install test dependencies
RUN # test runner
Run Code Online (Sandbox Code Playgroud)
还有几种选择。1.使用带有否定模式的.gitignore(或ADD?)
*
!directory-i-want-to-add
!another-directory-i-want-to-add
Run Code Online (Sandbox Code Playgroud)
另外使用 docker 命令指定 dockerfiles 和上下文:
docker build -t my/debug-image -f docker-debug .
docker build -t my/serve-image -f docker-serve .
docker build -t my/build-image -f docker-build .
docker build -t my/test-image -f docker-test .
Run Code Online (Sandbox Code Playgroud)
您还可以使用不同的 gitignore 文件。
-v host-dir:/docker-dir
)。所以你必须:
docker build -t my/build-image -f docker-build . # build `build` image (devtools like gulp, grunt, bundle, npm, etc)
docker run -v output:/output my/build-image build-command # copies files to output dir
docker build -t my/serve-image -f docker-serve . # build production from output dir
docker run my/serve-image # production-like serving from included or mounted dir
docker build -t my/serve-image -f docker-debug . # build debug from output dir
docker run my/serve-image # debug-like serving (uses build-image with some watch magic)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2638 次 |
最近记录: |