实现多个容器之间的协同,搭建Wordpress网站,要用到3个容器,Wordpress、MariaDB和Nginx

拉取镜像

使用docker pull拉取3个镜像:

$ sudo docker pull wordpress:5
$ sudo docker pull mariadb:10
$ sudo docker pull nginx:alpine

这张图可以描绘网站的架构图:

MariaDB作为网站的关系型数据库,使用3306端口

Wordpress是中间的应用服务器,使用MariaDB来存储数据,使用80端口

Nginx是反向代理,对外暴露80端口,将请求转发给Wordpress

启动MariaDB

先使用如下命令运行MariaDB,须要配置几个环境变量,用--env参数来制定启动时的数据库、用户名和密码

$ sudo docker run -d --rm \
> --env MARIADB_DATABASE=db \
> --env MARIADB_USER=wp \
> --env MARIADB_PASSWORD=123 \
> --env MARIADB_ROOT_PASSWORD=123 \
> mariadb:10
a06fa412c71f18ddc2ed1f982fdc08f93bebe030a46d313d8fd30aa5cb522f6c

启动之后,可以使用docker exec命令,执行数据库的客户端工具mysql,验证其是否正常运行:

$ sudo docker exec -it 83b mysql -u wp -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.8.3-MariaDB-1:10.8.3+maria~jammy mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| db |
| information_schema |
+--------------------+
2 rows in set (0.001 sec) MariaDB [(none)]>

如上所示,成功执行了一条语句

查看MariaDB的IP地址:

$ sudo docker inspect 83b | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",

启动Wordpress

接下来启动Wordpress,同样要用--env参数来指定一些环境变量:

$ sudo docker run -d --rm \
> --env WORDPRESS_DB_HOST=172.17.0.2 \
> --env WORDPRESS_DB_USER=wp \
> --env WORDPRESS_DB_PASSWORD=123 \
> --env WORDPRESS_DB_NAME=db \
> wordpress:5
1a1cc76293c8224afb8a82d3c6bbfec560f7b4a413d8789de82f95f06df81471

WORDPRESS_DB_HOST必须是MariaDB的IP地址,否则无法连接到数据库,这里没有为WordPress使用-p映射端口号,之后将部署一个Nginx反向代理,将请求转发给WordPress的端口号,配置Nginx的反向代理必须知道WordPress的IP地址,同样可以用docker inspect命令查看:

$ sudo docker inspect a47 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",

启动Nginx

Wordpress和MariaDB虽然使用了80和3306端口,但被容器隔离,外界不可见,使用Nginx进行端口映射,才能够外界80端口收发数据

在当前宿主机的工作目录下编辑一个Nginx配置文件wp.conf:

server {
listen 80;
default_type text/html; location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_pass http://172.17.0.3;
}
}

运行Nginx容器,并进行端口映射和目录挂载:

$ sudo docker run -d --rm \
> -p 80:80 \
> -v `pwd`/wp.conf:/etc/nginx/conf.d/default.conf \
> nginx:alpine
b1847e563c5d05408ff61036eaad20eaf5c57ff1eee74e6d4f6bc4a380bd1fd3

使用docker ps查看3个进程的情况:

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1847e563c5d nginx:alpine "/docker-entrypoint.…" 59 seconds ago Up 58 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp happy_murdock
1a1cc76293c8 wordpress:5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 80/tcp stoic_ellis
a06fa412c71f mariadb:10 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp heuristic_wiles

浏览器访问80端口,来到了wordpress的安装页面:

Dokcer应用部署(搭建Wordpress网站)的更多相关文章

  1. Linux下安装搭建WordPress网站

    WordPress简介 WordPress 是一种使用 PHP语言和 MySQL数据库开发的开源.免费的Blog(博客,网志)引擎,用户可以在支持 PHP 和 MySQL 数据库的服务器上建立自己的 ...

  2. LNMP环境下部署搭建wordpress

    1. 下载WordPress安装包 访问官方网站https://cn.wordpress.org/ 点击Download.tar.gz下载linux平台安装包 2. 安装软件 2.1.上传安装包 使用 ...

  3. 12、利用docker快速搭建Wordpress网站

    一.准备工作 结构图: 用户访问页面,Nginx将请求进行转发,如果请求的是php页面,则通过FastCGI转发给后端php进行处理:如果非php页面,则直接返回静态页面. 关键点: mysql.ph ...

  4. 如何在VPS上搭建WordPress博客网站(史上最全图文教程)

    由于现在很多人仍然使用共享主机,所以我决定写这篇教程,教你如何设置自己的虚拟专用服务器(VPS),以便为启动一个 WordPress 网站准备好所有必要的服务. 为什么共享托管不是最好的选择? 你的 ...

  5. LNMP环境下搭建wordpress

    WordPress 下载WordPress安装包,可以直接wget获取也可以ftp上传,解压到/usr/share/nginx/html/blog-wp,访问index.php即进行安装:   wor ...

  6. 利用XAMPP本地搭建WordPress博客

    现在越来越多的人利用WordPress搭建了自己的博客网站,我也是一样,但是还有一些人不知道怎么搭建WordPress网站的方法,因为怕弄 不好,所以也就没有花钱去做,所以这里我就讲讲怎么样利用XAM ...

  7. 5分钟搭建wordpress个人博客网站——宝塔傻瓜式部署,无坑系列,附赠主题和md插件[2021-12-31]

    一.前言 自从买了服务器,小编已经马不停蹄的学了两天服务搭建的知识,问了很多大佬,快速搭建自己的博客网站.有四种方式,我在这里全部分享给大家.自己已经搭建好,欢迎大家过来看一下,给你提供个思路哈! 小 ...

  8. Wordpress 网站搭建及性能监控方法详解!

    前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统.并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站.企业网站 ...

  9. LNMP架构之搭建wordpress博客网站

    系统环境版本 [root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@db02 ~]# uname -a Lin ...

  10. 用lnmp架构部署wordpress网站详细步骤

    用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...

随机推荐

  1. 按list大小进行分组

    package cn.tk.netcore.rest;import java.util.ArrayList;import java.util.Arrays;import java.util.List; ...

  2. SpringMVC配置文件applicationContext.xml头信息

    applicationContext.xml头信息 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  3. pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统。

    提示信息显示安装pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统. 2.更换pycharm社区版的安装版本 百度找到解决办法,参考文章& ...

  4. 扫描线总结【线段树特殊性质,没有pushdown、query操作】

    扫描线 题意 多个矩阵求交集,线段树的特殊操作,非常特殊的情况,一堆证明之后,就没有pushdown操作. 没有pushdown操作,也没有query操作,直接tr[1].len. 亚特兰蒂斯 由于点 ...

  5. C++常见报错信息和原因的对应关系

    1. 无法找到 xxx.dll 没有把动态链接库和exe放在一个文件夹下 2. 不允许使用不完整的类型 指的是忘了加头文件 3. link err .无法解析的外部符号 指的是 lib 库没有配置对 ...

  6. python 调试 qml

    1.设置pycharm的parameters -qmljsdebugger=port:10002,block 2.python 启动调试: 点击debug按钮 3.设置qt creater qt cr ...

  7. 手写 Java HashMap 核心源码

    手写 Java HashMap 核心源码 手写 Java HashMap 核心源码 上一章手写 LinkedList 核心源码,本章我们来手写 Java HashMap 的核心源码. 我们来先了解一下 ...

  8. pip第三方库安装失败原因及解决办法

    pip安装三方库失败原因及解决方法 提示:WARNING: You are using pip version 20.2.3, however version 20.2.4 is available. ...

  9. GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method

    持续更新 Go 语言学习进度中 ...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs ...

  10. odoo 权限管理学习总结

    环境 odoo-14.0.post20221212.tar base_user_role-12.0.2.1.2.zip 下载地址: https://apps.odoo.com/apps/modules ...