入口:
/usr/sbin/init
添加卷:
/data/site:/data/site
/data/soft:/data/soft
/data/docker/nginx-php7/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro
/data/docker/nginx-php7/wwwlogs:/data/wwwlogs/
/data/docker/nginx-php7/vhost:/usr/local/nginx/conf/vhost:ro
/data/docker/nginx-php7/redis.conf:/usr/local/redis/etc/redis.conf
1.安装oneinstack
....
2.在nginx的配置文件里加上这一行很关键,这样nginx可以在docker启动的时候在后台运行!
echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
3./usr/local/php/etc/php-fpm.conf
跟nginx里加一行的效果一样,为了启动docker时,php可以在后台运行
;daemonize = yes的注释去掉,并把yes改为no
为了同一个用户可以访问web的权限统一修改为www(宿主的web文件访问权限也是www)
修改为user=www group=www
4. 容器里安装supervisor
5.整理,删除,清理yum缓存,退出容器
cd /root/oneinstack/src
rm -fr *
make clean
yum clean all
exit;
6.设置开机启动
chkconfig nginx on
chkconfig php-fpm on
7.配置镜像运行
a.在宿主机下创建一个nginx目录,宿主也需要安装supervisor
mkdir /home/nginx/docker
cd /home/nginx/docker
yum install -y python-setuptools
easy_install supervisor
echo_supervisord_conf > supervisord.conf
b.Dockefile如下:,并到目录下vim Dockefile
FROM kenny/nginx:v1
ADD supervisor.conf /etc/supervisord.conf
EXPOSE 80 443
CMD ["/usr/bin/supervisord"]
c.其中supervisor.conf内容为:
[supervisord]
nodaemon=true
[program:nginx]
command=/usr/local/nginx/sbin/nginx
[program:php-fpm]
command=/usr/local/php/sbin/php-fpm -c /etc/php.ini -y /usr/local/php/etc/php-fpm.conf
d.运行Dockerfile
docker build -t kenny/nginx-php .
已经完成镜像
docker run -d --name nginx-php -p 80:80 kenny/nginx-php
使用命令docker ps -a 查看下这个容器是否正常启动,如果有问题,可以docker logs -f nginx-php 查看下这个容器启动在哪里出了问题。
8.nginx-php容器的使用技巧
cd /home/nginx
a、创建几个新的目录
mkdir {log,php.conf,data,conf} -plog->nginx的日志文件映射;
php.conf->php的配置文件映射;
data->web的文件目录;
conf->nginx的配置文件;
b、nginx.conf示例
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80 default_server ;
server_name test.lala.com ;
location / {
root /usr/share/nginx/web;
index index.html index.htm index.php api/login.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/web;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/web/$fastcgi_script_name;
include fastcgi_params;
}
}
}
daemon off;c、在/data/nginx/conf下准备好nginx.conf 在/data/nginx/php.conf 目录下准备好php.ini和php-fpm.conf ;之后启动容器的时候可以用命令:
docker run -d --name nginx-php -v /etc/localtime:/etc/localtime:ro --restart=always -p 80:80 -v /data/nginx/log:/usr/local/nginx/logs/ -v /data/nginx/php.conf/php.ini:/etc/php.ini -v /data/nginx/php.conf/php-fpm.conf:/usr/local/php/etc/php-fpm.conf -v /data/nginx/data:/usr/share/nginx/web -v /data/nginx/conf:/usr/local/nginx/conf/ Tom/nginx-php
d、更新nginx下的web文件,直接更新宿主机上/data/nginx/data/目录下的文件
e、如果要修改nginx的配置文件,直接在宿主机上的/data/nginx/conf目录下修改nginx.conf ;修改完成后,你可以使用下面命令:
docker exec nginx-php /usr/local/nginx/sbin/nginx -t #检查配置文件是否正确
docker exec nginx-php /usr/local/nginx/sbin/nginx -s reload #让容器里的nginx重新读取nginx配置文件
f、如果要修改php的配置文件,直接在宿主机上的/data/nginx/php.conf目录下修改php.ini或者修改php-fpm.conf ;修改完成后要重启容器才能生效
docker restart nginx-php
g、容器里的nginx日志输出映射到了宿主机上的/data/nginx/log目录下