前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Docker】WordPress 容器化部署

【Docker】WordPress 容器化部署

原创
作者头像
用户3052869
发布2024-03-25 10:55:51
1910
发布2024-03-25 10:55:51

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

你可以通过Qinghub部署工具直接安装部署,也可以手动按如下文档操作

什么是 WordPress?

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

快速执行

代码语言:console
复制
docker run --name wordpress bitnami/wordpress:latest

使用该 image

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

使用 Docker 命令行

Step 1: 创建网络
代码语言:console
复制
docker network create wordpress-network
Step 2: 创建MariaDB持久化卷并创建MariaDB容器
代码语言:console
复制
$ 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 持久性创建卷并启动容器
代码语言:console
复制
$ 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 运行应用程序

代码语言:console
复制
docker-compose up -d

持久化

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

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

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

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

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

代码语言:diff
复制
   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: 创建网络(如果不存在)
代码语言:console
复制
docker network create wordpress-network
Step 2. 创建具有主机卷的 MariaDB 容器
代码语言:console
复制
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 容器
代码语言:console
复制
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

代码语言:yaml
复制
wordpress:
      environment:
         - WORDPRESS_PASSWORD=my_password
  • 对于手动执行,--env为每个变量和值添加一个选项:
代码语言:console
复制
   $ 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.ymlwordpress: ... 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 ...
  • 对于手动执行:
代码语言:console
复制
$ 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
代码语言:yaml
复制
  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
         ...
  • 对于手动执行:
代码语言:console
复制
$ 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命令:
代码语言:console
复制
docker-compose exec wordpress wp help
  • 使用docker命令:docker exec wordpress wp help

日志

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

代码语言:console
复制
docker logs wordpress

使用docker-compose命令:

代码语言:console
复制
docker-compose logs wordpress

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 WordPress?
  • 快速执行
  • 使用该 image
    • 使用 Docker 命令行
      • Step 1: 创建网络
      • Step 2: 创建MariaDB持久化卷并创建MariaDB容器
      • Step 3: 为 WordPress 持久性创建卷并启动容器
    • 使用 Docker Compose 运行应用程序
    • 持久化
      • 使用 Docker Compose 将主机目录挂载为数据卷
        • 使用 Docker 命令行将主机目录挂载为数据卷
          • Step 1: 创建网络(如果不存在)
          • Step 2. 创建具有主机卷的 MariaDB 容器
          • Step 3. 使用主机卷创建 WordPress 容器
      • 配置
        • 环境变量
          • 可定制的环境变量
          • 只读环境变量
        • 例子
          • SMTP 配置
          • 将 WordPress 容器连接到现有数据库
      • WP-CLI 工具
      • 日志
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com