gpt4 book ai didi

Dockerfile 生产/构建/调试/测试环境

转载 作者:行者123 更新时间:2023-12-02 08:43:14 30 4
gpt4 key购买 nike

假设您有 Web 应用程序和一些工作流程执行器:

  • http-server(提供预构建 Assets 文件)- 生产
  • 构建器(从源代码编译/捆绑 js/css/html)- 部署/开发
  • 调试器/构建器(动态地从源构建,添加 js 源映射)- 开发
  • selenium(运行测试)- 集成测试

我们如何构建分层图像以使这些工作流程执行器最有效地工作?我所说的有效是指“运行速度最快,写入时间最少”。

最佳答案

答案可能很简单:只需创建 4 个依赖于另一个的 Dockerfile 即可。

您可以添加一个卷来共享源部分的构建。问题是您是否希望将结果资源包含在图像中,还是每次都从源构建它。

创建 4 个文件夹,每个文件夹中都有 Dockerfile

生产

生产/Dockefile:

FROM  # put server here
COPY # put config here
# some other option
# volume sharing?

构建

构建/Dockerfile:

# install dependencies
ADD # add sources here
RUN # some building script

调试

调试/Dockefile:

# ideally, configure production or build image

测试

测试/Dockefile:

FROM # import production
# install test dependencies
RUN # test runner

还有几个选项。1.使用带有否定模式的.gitignore(或ADD?)

*
!directory-i-want-to-add
!another-directory-i-want-to-add

加上使用 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 .

您还可以使用不同的 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)

    关于Dockerfile 生产/构建/调试/测试环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35733166/

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