1、下载安装nginx
docker pull nginx
2、启动nginx容器
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
这时会报错:
2ac8c2376d3d359aff2ea785/merged/etc/nginx/nginx.conf" caused "not a directory""": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
我们来分析一下
-p 80:80:将容器的80端口映射到主机的80端口
--name mynginx:将容器命名为mynginx
-v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
-v $PWD/conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
-v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
主要是因为conf文件的问题,ok,我们先删除该容器,避免重名
docker rm mynginx
再来一次,先不挂载nginx.con配置文件
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/logs:/wwwlogs -d nginx
然后使用如下命令进入交互式终端:
sudo docker exec -it mynginx /bin/bash
cd /etc/nginx/
ls
找到nginx.conf 配置文件
使用exit命令退出交互式终端
docker cp 52856d9cccc0:/etc/nginx/nginx.conf $PWD/conf/nginx.conf #52856d9cccc0与上面的root@52856d9cccc0要对应
但是在修改/root/conf/nginx.conf文件实现负载均衡的时候不起作用
docker rm mynginx
再次使用命令重新新建nginx容器:
docker run -p 80:80 --name mynginx --network host -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
这时候就可以了访问默认网页了
3、下载php镜像和启动镜像
docker pull php:7.1.0-fpm
docker run -p 9000:9000 --name myphp -v $PWD/www/:/var/www/html/ --privileged=true -d php:7.1.0-fpm
查看php镜像的ip地址docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp
172.17.0.2
4、PHP的docker容器里安装PHP扩展
apt-get update
apt-get install libpng12-dev
docker-php-ext-configure gd --enable-gd-native-ttf -with-jpeg-dir=/usr/lib --with-freetype-dir=/usr/include/freetype2
docker-php-ext-install gd
docker-php-ext-install pdo_mysql
安装mysqli扩展
官方php镜像
- docker exec -it php-fpm bash
- cd /usr/local/bin
- ./docker-php-ext-install mysqli
安装bcmath扩展
docker-php-ext-install bcmath
5、关联PHP配置nginx.conf
server {
listen 80;
server_name 域名;
#charset koi8-r;
access_log /wwwlogs/web-backend/web-backend.log main;
location / {
root /www/web-backend/backend/web;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$args;
}
location ~ .*.(php|php5)?$ {
root /var/www/html/web-backend/backend/web/;
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
增加红色部分,配置完就可以运行你的项目了!