CentOS 上带有 docker-compose.yml 的 Wordpress

标签 wordpress docker docker-compose centos

这是我第一次在 CentOS 上尝试 Vultr。

我能够成功地开发一个具有自定义主题的本地 Wordpress 网站,现在我正在尝试将它部署到 Vultr 上的 CentOS 服务器。我的 docker-compose.yml看起来像这样:

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:5.2.2-php7.1-apache
    ports:
      - "80:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    working_dir: /var/www/html
    volumes:
      - ./wp-content:/var/www/html/wp-content
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
  db_data: {}

我应该如何配置图像?
我应该为 wordpress、mysql 和 wp-content & uploads.ini 创建三个图像并在 docker-compose 中引用它们吗?或者我可以只制作一张图片吗?

最佳答案

首先,通常建议您通过每个容器使用一项服务来区分关注区域。所以对于 wordpress, mysql etc最好使用多种服务。

但是,这些服务使用一个图像或多个图像,这完全取决于您的场景。

其实你可以把所有的东西都放在一个镜像里,在镜像中为不同的docker-compose服务指定不同的命令。例如。

services:
  db:
    image: your_own_solo_image
    command: the command to start db

  wordpress:
    image: your_own_solo_image
    command: the command to start wordpress
    depends_on:
      - db

使用一张图片的缺点:
  • 也许一个容器只需要小的基础图像,例如alpine,另一个容器需要ubuntu,但是使用统一镜像(比如ubuntu),当两个容器运行时,都会使用ubuntu,可能会浪费更多的内存,因为ubuntu与alpine相比会消耗更多的资源。
  • 您可能会遇到库冲突,例如container1(service1) 需要lib.so.1 ,而 container2(service2) 可能需要 lib.so.2 ,您可能需要处理 LD_LIBRARY_PATH自己。如果你分开图像,这里没有问题。

  • 使用一张图片的优势:
  • 有时你可能想将服务(命令)分离到不同的容器,但是这两个命令真的非常依赖一个自己项目的相同源代码,并且环境都是一样的,那么不同的容器不需要使用不同的图像(不同的服务在撰写)。一个例子是 django 项目,你可能在一个服务中启动 wsgi,但也可能想在另一个服务中启动 celery worker,但仍然使用与你的 django 项目相同的代码。
  • 关于CentOS 上带有 docker-compose.yml 的 Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860794/

    相关文章:

    docker - Gitlab-runner:在根目录中找不到docker或docker-compose,但它们已经安装

    php wordpress 查询

    php - WordPress 联系表单 7 插件提交到特定页面

    docker-compose - Hyperledger - MSP 错误 : the supplied identity is not valid: x509: certificate signed by unknown authority

    ruby-on-rails - 如何将 ssh key 添加到 docker 容器?

    azure - Docker 上的端口

    python - 为什么 "docker-compose run"可以在容器外创建文件?

    php - 根据自定义字段位置订购帖子

    wordpress - 如何从 Woocommerce 订单中获取每个包裹的运费?

    docker - 如何停止 VS2017 准备 docker 镜像