【Docker】WordPress 容器化部署

WordPress标准软件基于Bitnami wordpress 构建。当前版本为6.4.3

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform

qinghub自动安装部署配置库

什么是 WordPress?

WordPress 是世界上最受欢迎的博客和内容管理平台。功能强大但简单,从学生到跨国公司,每个人都可以使用它来构建美观、实用的网站。

Overview of WordPress

快速执行

docker run --name wordpress bitnami/wordpress:latest

使用该 image

WordPress 需要访问 MySQL 或 MariaDB 数据库来存储信息。

使用 Docker 命令行

Step 1: 创建网络

docker network create wordpress-network

Step 2: 创建MariaDB持久化卷并创建MariaDB容器

$ docker volume create --name mariadb_data
docker run -d --name mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_wordpress \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_wordpress \
  --network wordpress-network \
  --volume mariadb_data:/bitnami/mariadb \
  bitnami/mariadb:latest

Step 3: 为 WordPress 持久性创建卷并启动容器

$ docker volume create --name wordpress_data
docker run -d --name wordpress \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --network wordpress-network \
  --volume wordpress_data:/bitnami/wordpress \
  bitnami/wordpress:latest

访问 : http://your-ip/

使用 Docker Compose 运行应用程序

docker-compose up -d

持久化

如果删除容器,所有数据都将丢失,并且下次运行映像时,数据库将重新初始化。为了避免这种数据丢失,您应该安装一个即使在容器被删除后仍然存在的卷。

为了持久化,您应该在路径上安装一个目录/bitnami/wordpress。如果挂载的目录为空,则首次运行时会对其进行初始化。此外,您应该安装一个卷来持久保存 MariaDB 数据。

mariadb_data上面的示例定义了名为和 的Docker 卷wordpress_data。只要不删除卷,WordPress 应用程序状态就会持续存在。

为了避免无意中删除卷,您可以将主机目录挂载为数据卷。或者,您可以使用卷插件来托管卷数据。

使用 Docker Compose 将主机目录挂载为数据卷

   mariadb:
     ...
     volumes:
-      - 'mariadb_data:/bitnami/mariadb'
+      - /path/to/mariadb-persistence:/bitnami/mariadb
   ...
   wordpress:
     ...
     volumes:
-      - 'wordpress_data:/bitnami/wordpress'
+      - /path/to/wordpress-persistence:/bitnami/wordpress
   ...
-volumes:
-  mariadb_data:
-    driver: local
-  wordpress_data:
-    driver: local

注意: 由于这是一个非根容器,因此安装的文件和目录必须具有 UID 的适当权限1001。

使用 Docker 命令行将主机目录挂载为数据卷

Step 1: 创建网络(如果不存在)

docker network create wordpress-network

Step 2. 创建具有主机卷的 MariaDB 容器

docker run -d --name mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_wordpress \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_wordpress \
  --network wordpress-network \
  --volume /path/to/mariadb-persistence:/bitnami/mariadb \
  bitnami/mariadb:latest

NOTE: 由于这是一个非根容器,因此安装的文件和目录必须具有 UID 的适当权限1001。

Step 3. 使用主机卷创建 WordPress 容器

docker run -d --name wordpress \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --network wordpress-network \
  --volume /path/to/wordpress-persistence:/bitnami/wordpress \
  bitnami/wordpress:latest

NOTE: 由于这是一个非根容器,因此安装的文件和目录必须具有 UID 的适当权限1001。

配置

环境变量

可定制的环境变量

Name Description Default Value
WORDPRESS_DATA_TO_PERSIST 相对于 WordPress 安装目录保留的文件。要提供多个值,请用空格分隔它们。 wp-config.php wp-content
WORDPRESS_ENABLE_HTTPS 是否默认为 WordPress 启用 HTTPS。 no
WORDPRESS_BLOG_NAME WordPress blog 名称. "User's blog"
WORDPRESS_SCHEME 生成应用程序 URL 的方案。已弃用WORDPRESS_ENABLE_HTTPS。 http
WORDPRESS_HTACCESS_OVERRIDE_NONE 将 ApacheAllowOverride变量设置为None. 所有默认指令都将从/opt/bitnami/wordpress/wordpress-htaccess.conf. yes
WORDPRESS_ENABLE_HTACCESS_PERSISTENCE 保留 htaccess 的自定义更改。是否坚持就看值WORDPRESS_HTACCESS_OVERRIDE_NONE。/opt/bitnami/wordpress/wordpress-htaccess.confno/opt/bitnami/wordpress/.htaccess no
WORDPRESS_RESET_DATA_PERMISSIONS 初始化时强制重置持久数据的所有权/权限,否则假设所有权/权限正确。以非 root 身份运行时被忽略。 no
WORDPRESS_TABLE_PREFIX 在 WordPress 中使用的表前缀。 wp_
WORDPRESS_PLUGINS 要安装和激活的 WordPress 插件列表,以逗号分隔。还可以设置为all激活所有当前安装的插件,或none跳过。 none
WORDPRESS_SKIP_BOOTSTRAP 是否对应用程序执行初始引导。 no
WORDPRESS_AUTO_UPDATE_LEVEL 允许安装 WordPress 核心的自动更新级别。有效值:major、minor、none。 none
WORDPRESS_ENABLE_REVERSE_PROXY 启用 WordPress 对反向代理标头的支持 no
WORDPRESS_ENABLE_XML_RPC 启用 WordPress XML-RPC 端点 no
WORDPRESS_USERNAME WordPress user name. user
WORDPRESS_PASSWORD WordPress user password. bitnami
WORDPRESS_EMAIL WordPress user e-mail address. user@example.com
WORDPRESS_FIRST_NAME WordPress user first name. UserName
WORDPRESS_LAST_NAME WordPress user last name. LastName
WORDPRESS_ENABLE_MULTISITE 启用 WordPress 多站点配置。 no
WORDPRESS_MULTISITE_NETWORK_TYPE 要启用的 WordPress 多站点网络类型。有效值:subfolder、subdirectory、subdomain。 subdomain
WORDPRESS_MULTISITE_EXTERNAL_HTTP_PORT_NUMBER WordPress 多站点的外部 HTTP 端口。 80
WORDPRESS_MULTISITE_EXTERNAL_HTTPS_PORT_NUMBER WordPress 多站点的外部 HTTPS 端口。 443
WORDPRESS_MULTISITE_ENABLE_NIP_IO_REDIRECTION 启用 WordPress 多站点时是否启用 IP 地址重定向到 nip.io 通配符 DNS。仅当在具有子域网络类型的 IP 地址上运行时才支持此功能。 no
WORDPRESS_MULTISITE_FILEUPLOAD_MAXK WordPress 多站点上传允许的最大上传文件大小(以千字节为单位)。 81920
WORDPRESS_DATABASE_HOST Database server host. $WORDPRESS_DEFAULT_DATABASE_HOST
WORDPRESS_DATABASE_PORT_NUMBER Database server port. 3306
WORDPRESS_DATABASE_NAME Database name. bitnami_wordpress
WORDPRESS_DATABASE_USER Database user name. bn_wordpress
WORDPRESS_DATABASE_PASSWORD Database password bn_wordpress
WORDPRESS_ENABLE_DATABASE_SSL 是否为数据库连接启用SSL。 no
WORDPRESS_VERIFY_DATABASE_SSL 当数据库连接启用SSL时是否验证数据库SSL证书。 yes
WORDPRESS_OVERRIDE_DATABASE_SETTINGS 覆盖持久性中的数据库设置。 no
WORDPRESS_SMTP_HOST smtp host。 smpt.126.com
WORDPRESS_SMTP_PORT smtp port。 587
WORDPRESS_SMTP_USER smtp user。 qingcloud
WORDPRESS_SMTP_PASSWORD smtp password。 qingcloud1234

只读环境变量

Name Description Value
WORDPRESS_BASE_DIR WordPress 安装目录。 ${BITNAMI_ROOT_DIR}/wordpress
WORDPRESS_CONF_FILE 配置文件。 ${WORDPRESS_BASE_DIR}/wp-config.php
WP_CLI_BASE_DIR WP-CLI 安装目录 ${BITNAMI_ROOT_DIR}/wp-cli
WP_CLI_BIN_DIR 二进制文件 ${WP_CLI_BASE_DIR}/bin
WP_CLI_CONF_DIR 配置文件目录 ${WP_CLI_BASE_DIR}/conf
WP_CLI_CONF_FILE 配置文件 ${WP_CLI_CONF_DIR}/wp-cli.yml
WORDPRESS_VOLUME_DIR 用于挂载配置文件的 WordPress 目录。 ${BITNAMI_VOLUME_DIR}/wordpress
WORDPRESS_DEFAULT_DATABASE_HOST 默认 database server host. mariadb
WORDPRESS_DEFAULT_DATABASE_HOST 默认 database server host. 127.0.0.1
PHP_DEFAULT_MEMORY_LIMIT 默认 PHP memory limit. 512M
PHP_DEFAULT_POST_MAX_SIZE 默认 PHP post_max_size. 80M
PHP_DEFAULT_UPLOAD_MAX_FILESIZE 默认 PHP upload_max_size. 80M
WP_CLI_DAEMON_USER WP-CLI system user. daemon
WP_CLI_DAEMON_GROUP WP-CLI system group. daemon

当您启动 WordPress 映像时,您可以通过在 docker-compose 文件或命令行上传递一个或多个环境变量来调整实例的配置docker run。请注意,某些变量仅在容器首次启动时才被考虑。如果要添加新的环境变量:

  • 对于 docker-compose

    wordpress:
      ...
      environment:
        - WORDPRESS_PASSWORD=my_password
      ...
    
  • 对于手动执行,--env为每个变量和值添加一个选项:

    $ docker run -d --name wordpress -p 80:8080 -p 443:8443 \
      --env WORDPRESS_PASSWORD=my_password \
      --network wordpress-tier \
      --volume /path/to/wordpress-persistence:/bitnami \
      bitnami/wordpress:latest
    

例子

SMTP 配置

  • 修改docker-compose.yml

      wordpress:
        ...
        environment:
          - WORDPRESS_DATABASE_USER=bn_wordpress
          - WORDPRESS_DATABASE_NAME=bitnami_wordpress
          - ALLOW_EMPTY_PASSWORD=yes
          - WORDPRESS_SMTP_HOST=smtp.gmail.com
          - WORDPRESS_SMTP_PORT=587
          - WORDPRESS_SMTP_USER=your_email@gmail.com
          - WORDPRESS_SMTP_PASSWORD=your_password
      ...
    
  • 对于手动执行:

    $ docker run -d --name wordpress -p 80:8080 -p 443:8443 \
      --env WORDPRESS_DATABASE_USER=bn_wordpress \
      --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
      --env WORDPRESS_SMTP_HOST=smtp.gmail.com \
      --env WORDPRESS_SMTP_PORT=587 \
      --env WORDPRESS_SMTP_USER=your_email@gmail.com \
      --env WORDPRESS_SMTP_PASSWORD=your_password \
      --network wordpress-tier \
      --volume /path/to/wordpress-persistence:/bitnami \
      bitnami/wordpress:latest
    

将 WordPress 容器连接到现有数据库

WordPress 容器支持将 WordPress 应用程序连接到外部数据库。这是为 WordPress 使用外部数据库的示例。

  • 修改docker-compose.yml

       wordpress:
         ...
         environment:
    -      - WORDPRESS_DATABASE_HOST=mariadb
    +      - WORDPRESS_DATABASE_HOST=mariadb_host
           - WORDPRESS_DATABASE_PORT_NUMBER=3306
           - WORDPRESS_DATABASE_NAME=wordpress_db
           - WORDPRESS_DATABASE_USER=wordpress_user
    -      - ALLOW_EMPTY_PASSWORD=yes
    +      - WORDPRESS_DATABASE_PASSWORD=wordpress_password
         ...
    
  • 对于手动执行:

    $ docker run -d --name wordpress\
      -p 8080:8080 -p 8443:8443 \
      --network wordpress-network \
      --env WORDPRESS_DATABASE_HOST=mariadb_host \
      --env WORDPRESS_DATABASE_PORT_NUMBER=3306 \
      --env WORDPRESS_DATABASE_NAME=wordpress_db \
      --env WORDPRESS_DATABASE_USER=wordpress_user \
      --env WORDPRESS_DATABASE_PASSWORD=wordpress_password \
      --volume wordpress_data:/bitnami/wordpress \
      bitnami/wordpress:latest
    

如果数据库已包含以前 WordPress 安装的数据,您需要将变量设置WORDPRESS_SKIP_BOOTSTRAP为yes. 否则,容器将执行安装向导并可以修改数据库中的现有数据。请注意,当设置WORDPRESS_SKIP_BOOTSTRAP为时yes,环境变量(例如WORDPRESS_USERNAME、WORDPRESS_PASSWORD或 )的值WORDPRESS_EMAIL将被忽略。确保在此导入的数据库中,表前缀与 中设置的表前缀匹配WORDPRESS_TABLE_PREFIX。

WP-CLI 工具

WordPress 容器包含命令行界面wp-cli,可以帮助您管理 WP 站点并与之交互。要运行此工具,请注意您需要使用正确的系统用户daemon。

这是使用wp-cli显示帮助菜单的示例:

  • 使用docker-compose命令:
docker-compose exec wordpress wp help
  • 使用docker命令:
docker exec wordpress wp help

日志

WordPress Docker 映像将容器日志发送到stdout. 要查看日志:

docker logs wordpress

使用docker-compose命令:

docker-compose logs wordpress
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容