環(huán)境介紹
根目錄: var/mydocker/nginx
網(wǎng)站根目錄:var/mydocker/nginx/www
nginx相關目錄:var/mydocker/nginx/conf.d
準備工作
1、使用docker加速器,我這里使用了daocloud加速器骄恶。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f7cb09b5.m.daocloud.io
#重啟docker
service docker restart
2食铐、下載官方相關鏡像
docker pull nginx
docker pull php:5.6-fpm
3、建立相關目錄
mkdir -p /var/mydocker/nginx/www
mkdir -p /var/mydocker/nginx/conf.d
4僧鲁、編輯default.conf
vim /var/mydocker/nginx/conf.d/default.conf
# 以下為示例內(nèi)容
server {
? listen? 80 default_server;
? server_name _;
? root? /usr/share/nginx/html;
? location / {
? index index.html index.htm index.php;
? autoindex off;
? }
? location ~ \.php(.*)$ {
? root? /var/www/html/;
? fastcgi_pass 172.17.0.2:9000;
? fastcgi_index index.php;
? fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? fastcgi_param PATH_INFO $fastcgi_path_info;
? fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
? include? fastcgi_params;
? }
}
搭建環(huán)境
1虐呻、啟動php鏡像
docker run -p 9000:9000 --name myphp \
-v /var/mydocker/nginx/www/:/var/www/html/ \
--privileged=true \
-d php:5.6-fpm
命令說明:
-p 9000:9000:將容器的9000端口映射到主機的9000端口
--name myphp:將容器命名為myphp?
-v -v /var/mydocker/nginx/www/:/var/www/html/?:將主機中/var/mydocker/nginx/www掛載到容器的/var/www/html
--privileged=true:container內(nèi)的root擁有真正的root權限
#查看php鏡像的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp
172.17.0.2
#修改default.conf配置文件,使fastcgi_pass的值為 172.17.0.2:9000
vim /var/mydocker/nginx/conf.d/default.conf
fastcgi_pass 172.17.0.2:9000;
2寞秃、啟動nginx鏡像
docker run -p 80:80 --name mynginx \
-v /var/mydocker/nginx/www:/usr/share/nginx/html \
-v /var/mydocker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx
3斟叼、查看鏡像運行狀態(tài)
docker ps
4、生成php測試文件info.php
echo " /docker/www/info.php
瀏覽器訪問 http://localhost/info.php 驗證
nginx虛擬機配置
以配置www.test.com虛擬機為例,項目目錄地址為/docker/www/test.com/
vim /docker/nginx/conf.d/test.com.conf
# 示例內(nèi)容如下
server {
? listen? 80;
? server_name www.test.com;
? root? /usr/share/nginx/html/test.com/;
? location / {
? index index.html index.htm index.php;
? autoindex off;
? }
? location ~ \.php(.*)$ {
? root? /var/www/html/test.com/;
? fastcgi_pass 172.17.0.2:9000;
? fastcgi_index index.php;
? fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? fastcgi_param PATH_INFO $fastcgi_path_info;
? fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
? include? fastcgi_params;
? }
}
#重啟nginx鏡像
docker restart mynginx
docker常用命令
1春寿、停止所有正在運行的容器
docker kill $(docker ps -a -q)
2朗涩、刪除所有已停止運行的容器
docker rm $(docker ps -a -q)
3、查看容器運行狀態(tài)
docker stats
4绑改、進入容器內(nèi)進行命令行操作
docker exec -it content-name-or-id /bin/bash
常見問題
CentOS7 環(huán)境下因為宿主的SELINUX谢床,導致在nginx容器內(nèi)無法訪問配置文件(default.conf),進而容器無法提供web服務
解決方法:
#############方法一#############
#在宿主主機關閉SELINUX
#臨時關閉
setenforce 0
#永久關閉 修改/etc/sysconfig/selinux文件
SELINUX=disabled
#############方法二#############
#以特權方式運行容器
#--privileged參數(shù)為true
docker run -it --privileged=true -d nginx