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 需要根权限。如果要避免在每次运行命令时使用,请将用户名添加到组中:sudo
docker
docker
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 官方网站。