实现多个容器之间的协同,搭建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. 量化交易-可视化展示(grafana)

    先上图 简单的实现了一下,效果还好,可玩性强 大概部署mysql+grafana step 1: 服务器:阿里云,ucloud啥的随意,配置也不需要什么,我的是阿里云1核1GB,足以 我用的ubunt ...

  2. 正向代理和反向代理和spring的动态代理模式有几种?默认是那种?如何切换?

    spring的动态代理模式有几种?默认是那种?如何切换? spring的动态的代理模式有两种 JDK动态代理,基于接口(默认代理模式),CGLIB动态代理(若要使用需要进行配置) JDK动态代理是由j ...

  3. requests使用socks代理

    requests在2.10.0版本开始支持socks代理 自己搭了个服务器所以就想顺便用一下. import requests url = 'xxx' my_proxies={"http&q ...

  4. [Python]判断字符串是否是数值,可以采用正则表达式技术来进行输入检测处理

    判断字符串是否是数值的传统代码参考: sInput=input("请输入数值[整数或小数]:") sInput2="" bErr=False cSign=&qu ...

  5. unittest框架基本使用

    1.简介 unittest是python内置的单元测试框架,具备编写用例.组织用例.执行用例.输出报告等自动化框架的条件.使用unittest前需要了解该框架的五个概念: 即test case,tes ...

  6. 小程序使用svga

     svga 是一种动画格式.不仅可以在 ios,android,flutter,web 上使用,小程序也支持.设计师使用 after effects 或是 animate 进行动画设计.设计师导出工具 ...

  7. ssh反向代理树莓派+motion,实现公网远程视频监控

    注意:本文公网远程监控部分需要借助有公网IP的云服务器进行ssh反向代理. 一.借助motion实现内网的视频监控 准备 插上摄像头,然后输入ls /dev/video*命令检查是否识别了摄像头 安装 ...

  8. bash中的basename与dirname以及${}

    var=/dir1/dir2/file.tar.gz basename $var        #获取文件名 file.tar.gz dirname $var            #获取目录名称 / ...

  9. SpringBoot之独立quartz数据源

    背景: 之前项目里面把quartz相关的表跟业务数据库(涉及系统业务的库)融合在一起,后面需要把quartz单独拎出来放在一个数据库里面, 旧的数据源配置(application.properties ...

  10. [ACTF2020 新生赛]Include 1

    首先进入靶场可以看到trip 查看源码 点击进入提示我们能不能找到flag 可以看到这里是文件包含,想着包含index.php但是根目录是自动索引的,无论输入什么都是trip页面 又想着包含flag. ...