如何使用 Docker Compose 安装 WordPress
admin
2023-07-31 20:50:19
0

WordPress是一种流行的开源内容管理系统(CMS),用于创建和管理网站。安装WordPress的方法之一是使用Docker Compose,这是一个用于定义和运行多容器Docker应用程序的工具。WordPress-logoWordPress-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-installwordpress-wp-admin-install

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

phpMyAdmin-loginwordpress-wp-admin-install
phpMyAdmin login page

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

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
iPhone 屏幕上有亮绿色斑... iPhone 是市场上最稳定的智能手机之一,这主要归功于专为它们设计的 iOS 操作系统。然而,他们...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
QQ浏览器怎么制作简历 QQ浏览器是腾讯公司开发的一款极速浏览器,支持电脑,安卓,苹果等多种终端;更快的浏览体验,更安全的浏...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
Apple Watch Ult... 所有运行 watchOS 7 或更高版本的 Apple Watch 型号都包含一项名为“优化电池充电...
统信UOS每次开机后不直接进入... 统信UOS每次开机后不直接进入系统而是进入到recovery模式 按方向上键选择UOS 20 SP1...