使用 Docker + nginx-proxy + PHP7 on Apache + MySQL5.7 来建立 WordPress 环境,第二步

从上次(第一部分)开始继续。

将域名注册到DNS。

现在,在完成前面的工作之后,我们已经准备好启动WordPress了,但要使用nginx-proxy以域名访问,需要在DNS中注册域名和A记录。我在AWS的EC2上有一个Docker环境,并且在AWS的Route53中管理DNS记录。因此,在这里,我们将在Route53中进行设置,以便我们可以通过带有wp.XXXXXXX.org子域名的形式访问WordPress。基本上,只需要进行以下配置:

010.png

我认为没有必要进行过多解释,只是将Docker主机的IP地址注册为A记录。如果您是在本地开发环境中尝试,可以将其写入hosts文件中,类似的操作也可以实现。这样,您就可以访问http://wp.XXXXXXX.org/并显示WordPress了。

使用 Docker Compose 快速部署 WordPress

终于到了启动WordPress的阶段,考虑到数据持久化和可移植性,至少需要启动三个容器。

WordPress容器
MySQL容器
数据容器(共享WordPress程序/资源和MySQL数据)

由于一个一个启动它们很麻烦,因此我们将使用Docker Compose来统一管理它们。在任意目录下创建一个名为docker-compose.yml的文件。

[docker-op@~]$ mkdir docker_compose_wordpress && cd docker_compose_wordpress

[docker-op@docker_compose_wordpress]$ vi docker-compose.yml
wordpress:
  image: abe-local/wordpress-php7
  volumes_from:
    - data
  ports:
    - 8080:80
  links:
    - db:mysql
  environment:
    - WORDPRESS_DB_NAME=wordpress
    - VIRTUAL_HOST=wp.XXXXXXX.org
    - TZ=Asia/Tokyo
db:
  image: mysql
  volumes_from:
    - data
  environment:
    MYSQL_ROOT_PASSWORD: --PASSWORD--

data:
  image: busybox
  volumes:
    - /var/lib/mysql
    - /var/www/html

我来简单解释一下,对于WordPress中的image:,您需要在其中写入之前创建的WordPress镜像名称(标签)。同样,在WordPress的environment:中,您需要写入刚刚注册到DNS中的域名。仅凭这些操作,nginx-proxy将正确地将请求转发至相关目标。(在AWS等环境中,请确保nginx正在监听打开的80号端口)。虽然有nginx-proxy,不需要指定ports:来使用8080端口进行访问,但是似乎这是一个必需的设置,请不要忘记指定。

在数据库中,通过将image设为mysql,将获得最近发布的最新版本5.7的官方镜像。请务必指定密码,以免忘记。

用名为busybox的映像创建一个名为data的容器。将/var/www/html用于WordPress和/var/lib/mysql用于MySQL挂载。通过指定data:db:并使用volumes_from将data指定为wordpress和db卷,实现数据的持久性和可移植性。

现在,只需运行以下命令,即可下载 MySQL 和 busybox 的镜像,并顺序启动三个容器,应该能够成功启动 WordPress(虽然 data 容器在启动后会立即停止)。

[docker-op@docker_compose_wordpress]$ docker-compose up -d
(出力略)

[docker-op@docker_compose_wordpress]$ docker ps -a
(出力略:WordPress、MySQL、busybox、nginx、nginx-genの5つのプロセスが立ち上がっているはず)

通过浏览器访问 http://wp.XXXXXXX.org,如果出现以下熟悉的画面即表示成功。

011.png

数据备份和恢复

由于我们将数据容器单独启动,因此可以轻松进行数据备份和恢复。请先切换到刚才启动docker-compose.yml的目录,然后停止三个容器,暂时启动一个备份专用容器(busybox),以进行备份和恢复操作。

(3コンテナの停止)
[docker-op@docker_compose_wordpress]$ docker-compose stop

(WordPressバックアップ)
[docker-op@docker_compose_wordpress]$ docker run --rm \
--volumes-from wordpress_data_1 \
-v $(pwd):/backup busybox \
tar cvf /backup/backup_html.tar /var/www/html

(MySQLバックアップ)
[docker-op@docker_compose_wordpress]$ docker run --rm \
--volumes-from wordpress_data_1 \
-v $(pwd):/backup busybox \
tar cvf /backup/backup_mysql.tar /var/lib/mysql

(WordPressリストア)
[docker-op@docker_compose_wordpress]$ docker run --rm \
--volumes-from wordpress_data_1 \
-v $(pwd):/backup busybox \
tar xvf /backup/backup_html.tar

(MySQLリストア)
[docker-op@docker_compose_wordpress]$ docker run --rm \
--volumes-from wordpress_data_1 \
-v $(pwd):/backup busybox \
tar xvf /backup/backup_mysql.tar

(3コンテナの再開)
[docker-op@docker_compose_wordpress]$ docker-compose start

有些复杂啊。。。为什么在备份和恢复时要使用docker run呢?还有后面的部分等等。说实话,我也没有完全理解,也写不好,所以请参考其他人的文章。

关于Docker和数据卷容器的讨论

此外,这不仅限于Docker,tar的合并和展开会消耗大量的CPU和内存。如果使用Docker安装了多个环境,需要考虑这个操作对其他环境的影响。如果耗尽交换空间导致所有环境无响应,将会非常痛苦。。。

因此,我的帖子变得相当混乱。对不起。

广告
将在 10 秒后关闭
bannerAds