首页 > Docker > Docker 实践(搭建WordPress站点)
2016
01-12

Docker 实践(搭建WordPress站点)

这里我们使用容器互联的方式搭建WordPress站点,前提是两个容器在同一个宿主机上

一、容器1中安装nginx+php

参考之前的博客  http://tshare365.com/archives/2101.html

注意容器构建完就可以了,不要启动

二、容器2中安装mysql

参考之前博客 http://tshare365.com/archives/2104.html

三、容器互联

目的:nginx容器可以连接mysql容器

3.1、在宿主机上开启转发

vi /etc/sysctl.conf
 #-------------------------
 net.ipv4.ip_forward = 1
 #-------------------------
 sysctl -p

3.2、连接mysql容器,并创建授权用户用于WordPress连接mysql

[root@localhost mysql]# docker exec -ti mysql bash

bash-4.1# 
bash-4.1# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> grant all on *.* to 'test'@'172.17.%.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

3.3、启动nginx+php 容器

[root@localhost ~]# docker run -d -p 80:80 --link mysql:db -v /data/:/usr/share/nginx/html/ tshare365/lnmp
16aefa18bfe221f3cd81e3c9116cbeaaa37175b0eee368fb5aaf44e4bf279368


[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
16aefa18bfe2        tshare365/lnmp      "./tmp/run.sh"      4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   furious_lovelace    
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker exec -ti 16aefa18bfe2 bash
[root@688ed52f72b8 /]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      7/php-fpm           
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      13/nginx

–link 创建了两个容器间的父子连接 ,这个标志需要两个参数一个是容器名称,一个是别名。 这里mysql是容器名称,sql是别名

3.3.1、查看hosts文件

[root@688ed52f72b8 /]# cat /etc/hosts
172.17.0.2	688ed52f72b8
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.1	sql 5287c1e61cb4 mysql

我们看到最后一行,sql是我们刚才设置的别名,172.17.0.1是mysql容器的IP地址,通过–link标志自动会在hosts文件中添加一条记录,我们只是关心容器名称不需要关心容器的IP地址

3.3.2、查看环境变量

[root@688ed52f72b8 /]# env                                         
HOSTNAME=688ed52f72b8
SQL_PORT_3306_TCP=tcp://172.17.0.1:3306
LS_COLORS=
SQL_NAME=/webapp/sql
SQL_PORT_3306_TCP_ADDR=172.17.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SQL_PORT_3306_TCP_PORT=3306
SHLVL=1
HOME=/root
SQL_PORT_3306_TCP_PROTO=tcp
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
SQL_PORT=tcp://172.17.0.1:3306
_=/usr/bin/env
[root@688ed52f72b8 /]#

 

我们发现环境变量已经自动设置好了,如果程序需要连接数据库,可以通过变量去连接

3.3.3、连接mysql测试

[root@688ed52f72b8 /]# mysql -h sql  -u test -p                                                                                      
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 注意这里我们使用的是容器的别名sql并没有使用IP地址,这样就不用担心mysql容器的IP地址变化了

四、安装WordPress站点

4.1、将WordPress程序包存放到宿主机的/data/目录下并解压(因为/data/ 目录已经挂载到nginx+php容器中,是站点目录)

blob.png

4.2、游览器访问

blob.png

blob.png

到此docker容器互联已经成功了。

总结

 本章docker内容就到此结束了,如果你对docker感兴趣,请持续关注Tshare365谢谢!




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复