如何使用 Docker Compose 安装 WordPress

2023年 7月 20日 36.3k 0

WordPress是一种流行的开源内容管理系统(CMS),用于创建和管理网站。安装WordPress的方法之一是使用Docker Compose,这是一个用于定义和运行多容器Docker应用程序的工具。WordPress-logo

使用 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

wordpress-wp-admin-install

此外,您可以通过 URL 访问 phpMyAdmin 。https://phpmyadmin.your-domain.com

phpMyAdmin-loginphpMyAdmin login page

感谢您使用本教程在 Ubuntu 系统上安装 WordPress with Docker Compose。有关其他帮助或有用信息,我们建议您查看 Docker 官方网站。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论