[title]安装Docker社区版[/title]
curl -fsSL https://get.docker.com/ | sh
[title]创建Docker内部网络[/title]
docker network create --subnet=172.18.0.0/16 mynetwork
[title]下载MySQL镜像[/title]
docker pull mysql:5.6
[title]配置MySQL容器启动脚本[/title]
#!/bin/bash
docker rm -f mysql
docker run -d --name mysql \
--net mynetwork --ip 172.18.0.20 \
-p 3333:3306 \
-v /etc/localtime:/etc/localtime:ro \
-v /mydata/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
docker ps
解释:
设置容器的IP为172.18.0.20, 宿主机映射端口3333, 容器时区根据宿主机走, MySQL数据映射出来, 最后可设置root密码
具体可参考https://hub.docker.com/r/library/mysql/
[title]下载Nginx+PHP镜像[/title]
docker pull 1and1internet/ubuntu-16-nginx-php-7.0
这个镜像基于Ubuntu, 集成并优化了php和nginx, 从dockerfile可以看到它的nginx配置在容器的/etc/nginx下面, 查看nginx.conf可以看到只有http节点, server节点是从另一个目录引用进来的/etc/nginx/sites-enabled/site.conf
dockerfile:https://hub.docker.com/r/1and1internet/ubuntu-16-nginx-php-7.0/~/dockerfile/
可以自己新建一个server配置映射进去
[title]新建一个Web用户[/title]
useradd -u 65530 webuser
[title]配置Nginx+PHP容器启动脚本[/title]
#!/bin/bash
USERID=65530
PORT=80
WEB_ROOT="/mydata/web/1.0/"
sudo docker rm -f nginx-php-7.0
sudo docker run -d --name nginx-php-7.0 \
--net mynetwork --ip 172.18.0.30 \
-v /etc/localtime:/etc/localtime:ro \
-u ${USERID}:0 \
-p ${PORT}:8081 \
-v ${WEB_ROOT}:/var/www/ \
-v /mydata/nginx/config/mysite.conf:/etc/nginx/sites-enabled/mysite.conf \
-v /mydata/nginx/logs/:/var/log/nginx/ \
1and1internet/ubuntu-16-nginx-php-7.0:latest
sleep 15
sudo docker ps
解释:
${WEB_ROOT}是自己网站在宿主机上的目录, /var/www是nginx server配置里的网站目录, 把自己新建的server配置mysite.conf映射到/etc/nginx/sites-enabled/目录下, log映射出来
具体可参考https://hub.docker.com/r/1and1internet/ubuntu-16-nginx-php-7.0/
[title]PHP与MySQL链接[/title]
连接的地址可以使用Docker内部网络, 172.18.0.30:3306, 把刚才外网映射出来的3333加到防火墙, 比较安全.
文章评论