Wordpress with docker-compose.yml on CentOS



这是我第一次尝试使用centos。

我能够成功地开发具有自定义主题的本地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,但是使用Unify图像(例如Ubuntu(,当两个容器运行时,它都将使用Ubuntu,也许还有更多的内存浪费,因为Ubuntu与Alpine相比会消耗更多的资源。

  • 您可能会遇到图书馆冲突,例如Container1(Service1(需要lib.so.1,而Container2(Service2(可能需要lib.so.2,您可能必须自己处理LD_LIBRARY_PATH。如果您将图像分开,请在此处没有问题。

使用一个图像的优势:

  • 有时您可能需要将服务(命令(分开到不同的容器,但是这两个命令确实非常依赖一个自己的项目的相同源代码,并且环境都是相同的,那么无需为不同的容器使用不同的图像(撰写不同的服务(。一个示例是Django项目,您可以在一项服务中启动WSGI,但也可能想在另一个服务中启动芹菜工人,但仍然使用Django项目的相同代码。

最新更新