如何使用 Docker Compose 安装 WordPress
WordPress是一种流行的开源内容管理系统(CMS),用于创建和管理网站。安装WordPress的方法之一是使用Docker Compose,这是一个用于定义和运行多容器Docker应用程序的工具。
使用 Docker Compose 安装 WordPress
第 1 步。首先,通过在终端中运行以下命令,确保所有系统软件包都是最新的。apt
sudo apt update sudo apt upgrade
第 2 步。安装 Docker。
默认情况下,Docker 在 Ubuntu 22.04 基础存储库上不可用。现在运行以下命令将 Docker 存储库添加到系统中:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
接下来,将 GPG 密钥导入您的系统:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
启用存储库后,现在使用以下命令安装最新版本的 Docker 包:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
您可以验证 Docker 是否已安装以及当前版本:
docker -v
成功安装后,启用 Docker(在系统启动时自动启动)、启动并使用以下命令验证状态:
sudo systemctl enable docker sudo systemctl start docker sudo systemctl status docker
默认情况下,Docker 需要根权限。如果要避免在每次运行命令时使用,请将用户名添加到组中:sudodockerdocker
sudo usermod -aG docker $(whoami)
su - ${USER}
确认您的用户已添加到 Docker 组:
groups
有关安装和管理 Docker 的其他资源,请阅读下面的帖子:
- 如何在 Ubuntu Linux √ 上安装 Docker。
第 3 步。为 WordPress 创建 Docker Compose 文件。
首先,为 WordPress 配置创建一个目录:
mkdir wordpress cd wordpress
接下来,使用您喜欢的文本编辑器创建并打开 Docker 撰写文件:
nano docker-compose.yml
添加以下文件:
version: '3.9'
services:
wp:
image: wordpress:latest
container_name: wordpress-app
restart: unless-stopped
expose:
- 8080
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
#- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Plugin development
#- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme development
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
VIRTUAL_HOST: your-domain.com
LETSENCRYPT_HOST: your-domain.com
depends_on:
- db
links:
- db
wpcli:
image: wordpress:cli
container_name: wpcli_app
volumes:
- ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- ./wp-app:/var/www/html
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "${DB_NAME}"
WORDPRESS_DB_USER: "${DB_USER_NAME}"
WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
depends_on:
- db
- wp
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
restart: unless-stopped
environment:
# https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
PMA_HOST: db
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
UPLOAD_LIMIT: 50M
VIRTUAL_HOST: phpmyadmin.your-domain.com
LETSENCRYPT_HOST: phpmyadmin.your-domain.com
expose:
- 8081
links:
- db:db
db:
image: mysql:latest
container_name: wordpressdb
restart: unless-stopped
command: [
'--default_authentication_plugin=mysql_native_password',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
volumes:
- ./wp-data:/docker-entrypoint-initdb.d
- db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_USER: "${DB_USER_NAME}"
MYSQL_PASSWORD: "${DB_USER_PASSWORD}"
volumes:
db_data:
保存并关闭文件,然后为撰写文件中使用的变量创建环境文件:
sudo nano .env
添加以下文件:
DB_NAME=wordpress DB_USER_NAME=username DB_USER_PASSWORD=userpassword DB_ROOT_PASSWORD=your-strong-password
保存并关闭文件,然后为 PHP 配置创建一个文件夹:
mkdir config
现在我们创建并打开文件进行编辑:php.conf.ini
nano config/php.conf.ini
添加以下文件:
file_uploads = On memory_limit = 512M upload_max_filesize = 30M post_max_size = 30M max_execution_time = 400
第 4 步。为 nginx 配置 Docker Compose。
首先,我们为 Nginx 配置创建目录:
mkdir nginx
接下来,在该目录中为虚拟主机创建一个目录:
mkdir nginx/vhost
之后,创建并打开它们进行编辑。nginx/vhost/wordpress.your-domain.com
nano nginx/vhost/wordpress.your-domain.com
粘贴以下文件:
server_tokens off; client_max_body_size 30m;
保存并关闭文件。
对文件执行相同的操作。nginx/vhost/phpmyadmin.example.com
nano nginx/vhost/phpmyadmin.your-domain.com
添加以下代码:
server_tokens off; client_max_body_size 50m;
保存并关闭文件,然后再次打开 docker 撰写文件:
nano docker-compose.yml
将以下代码粘贴到该行之前。volumes: db_data:
nginx:
container_name: nginx
image: nginxproxy/nginx-proxy
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/html:/usr/share/nginx/html
- ./nginx/certs:/etc/nginx/certs
- ./nginx/vhost:/etc/nginx/vhost.d
logging:
options:
max-size: "10m"
max-file: "3"
第5步。为 SSL 配置 Docker Compose。
现在我们使用以下命令打开一个 docker-compose 文件:
nano docker-compose.yml
在该行之前添加以下代码:volumes: db_data:
acme-companion:
container_name: acme-companion
image: nginxproxy/acme-companion
restart: unless-stopped
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./nginx/acme:/etc/acme.sh
environment:
DEFAULT_EMAIL: admin@your-domain.com
步骤 7.配置防火墙。
现在我们使用WordPress设置了一个简单防火墙(UFW),以允许公共访问默认Web端口80:
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
第8步。安装WordPress。
完成所有配置文件后,就可以启动和启动容器了:
docker compose up -d
输出:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES r1e8agdt169d nginxproxy/acme-companion "/bin/bash /app/entr…" 12 seconds ago Up 8 seconds acme-companion 9m3ilk8ff790 wordpress:latest "docker-entrypoint.s…" 12 seconds ago Up 8 seconds 80/tcp, 8080/tcp wordpress-app 1f9c777g9dta phpmyadmin/phpmyadmin "/docker-entrypoint.…" 12 seconds ago Up 8 seconds 80/tcp, 8081/tcp pma 1bmwil07an42 nginxproxy/nginx-proxy "/app/docker-entrypo…" 12 seconds ago Up 10 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx t0dh64a2f4a3 mysql:latest "docker-entrypoint.s…" 12 seconds ago Up 10 seconds 3306/tcp, 33060/tcp wordpressdb
现在打开您的网络浏览器并使用 URL 访问 WordPress Web UI。您将被重定向到以下页面:https://your-domain.com

此外,您可以通过 URL 访问 phpMyAdmin 。https://phpmyadmin.your-domain.com
phpMyAdmin login page
感谢您使用本教程在 Ubuntu 系统上安装 WordPress with Docker Compose。有关其他帮助或有用信息,我们建议您查看 Docker 官方网站。