Dokcer应用部署(搭建Wordpress网站)

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

拉取镜像

使用docker pull拉取3个镜像:

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

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

img

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的安装页面:

posted @ 2022-07-22 20:43  N3ptune  阅读(177)  评论(0编辑  收藏  举报