gpt4 book ai didi

docker - 简单的 docker 容器 : Build dedicated image or mount config as volume?

转载 作者:行者123 更新时间:2023-12-04 21:33:36 26 4
gpt4 key购买 nike

我正在整理一个 docker-compose.yml文件为我正在处理的项目运行多个服务。这个项目有一个 Magento 和 Wordpress 网站驻留在同一个域下,“同域”方面需要一个非常简单的 nginx 容器来将请求路由到任一服务。

所以我将它设计为 4 个容器( visualisation ):

  • “magento”容器,使用内部项目特定的图像。
  • “wordpress”容器,使用内部项目特定的图像。
  • 正在运行的“db”容器 mysql:5.6 , init db 转储安装在 /docker-entrypoint-initdb.d .
  • 运行的“路由器”容器 nginx:alpine自定义配置安装在 /etc/nginx/nginx.conf .这用作设置了两个位置指令的反向代理。 location /路由到“magento”,和 location /blog路由到“wordpress”。

  • 我想保持简单并避免构建不必要的自定义图像,但是在“路由器”的上下文中,我不确定我在做什么是最好的方法,或者作为特定于项目的图像是否会更好.

    我倾向于将自定义配置安装到 nginx:alpine 中的当前方法容器,因为配置特定于正在运行的堆栈 - 作为单个独立容器没有意义。

    所以这两种方法,在没有自定义图像的情况下,我们在 docker-compose.yml 中有以下内容
          router:
    image: nginx:alpine
    networks:
    - projectnet
    ports:
    - "80:80"
    volumes:
    - "./router/nginx.conf:/etc/nginx/nginx.conf"

    否则,我们有一个 Dockerfile包含以下内容,正如我在互联网和其他 StackOverflow 响应中看到的那样。
        FROM nginx:alpine

    ADD nginx.conf /etc/nginx/

    有人赞成/反对这两种方法吗?

    最佳答案

    如果您“烘烤”nginx 配置(您的第二种方法)

    ADD nginx.conf /etc/nginx/

    它使您的 docker 容器更加强大 可移植 - 即它们可以下载并在任何能够运行 docker 的服务器上运行,它会正常工作。

    如果您使用选项 1,在运行时挂载配置文件,那么您将依赖项之一转移到容器外部。这使其成为必须在 docker 之外管理的依赖项。

    在我看来,最好在 dockerfiles 中放置尽可能多的依赖项,因为它使它们更便携且更自动化(例如非常适合 CI Pipelines)

    在运行时挂载文件是有原因的,这些通常以特定于环境的设置为中心(尽管这些在很大程度上也可以在 docker 中克服)或应用程序开发人员不应或无法访问的“敏感”文件。例如 ssl 证书、数据库密码等

    关于docker - 简单的 docker 容器 : Build dedicated image or mount config as volume?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44439038/

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