docker运行centos后傻瓜式安装nginx+php
By 小鸟游·飒
nginx部分
FROM centos:7.2.1511
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
CMD ["/bin/bash"]
#安装依赖
yum makecache fast
yum -y install \
lynx \
wget \
openssl \
openssl-devel \
pcre \
pcre-devel \
zlib
yum group -y install "Development Tools"
#安装nginx(编译开启ssl部分)
wget http://nginx.org/download/nginx-1.18.0.tar.gz \
&& tar -zxvf nginx-1.18.0.tar.gz \
&& mv nginx-1.18.0 nginx \
&& rm -f nginx-1.18.0.tar.gz \
&& cd nginx \
&& ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module \
&& make \
&& make install
#查看nginx路径
whereis nginx
#查询nginx进程
ps aux|grep nginx
#单独的nginx运行
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
./nginx -s reload
docker exec -itd nginx /usr/local/nginx/sbin/nginx -s reload
#设置容器内nginx自启动
cd /
vi start.sh
#复制如下进入 start.sh
#!/bin/sh
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/bin/bash
#给予权限
chmod -R 777 start.sh
#重建新镜像
docker commit -a="hayate<391942308@163.com>" -m="备注" [CONTAINER ID] [IMAGE]:[TAG]
#通过脚本启动新容器
docker run -it -p 80:80 -p 443:443 [IMAGE]:[TAG] /start.sh
#设置容器随docker启动而启动
docker container update --restart=always [CONTAINER ID]
#重启docker 尝试是否成功
systemctl restart docker
#nginx配置
php部分
docker pull php:7.2-fpm
//重新进入容器
docker exec -it php /bin/bash
//安装redis扩展
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
tar xfz /tmp/redis.tar.gz
rm -r /tmp/redis.tar.gz
mkdir -p /usr/src/php/ext
mv phpredis-3.1.3 /usr/src/php/ext/redis
docker-php-ext-install redis
//更新软件源
apt update
//安装扩展依赖
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
//解压源码
docker-php-source extract
//安装GD扩展
cd /usr/src/php/ext/gd
//编译
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
(7.4版本开始修改为 <docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2/>)
//安装
docker-php-ext-install gd
//安装pdo_mysql扩展
docker-php-ext-install pdo pdo_mysql
//重启容器
docker restart php
#重建新镜像
docker commit -a="hayate<391942308@163.com>" -m="备注" [CONTAINER ID] [IMAGE]:[TAG]
mysql部分
docker pull mysql:5.7
***可能会因为php缺少mysqli,可以进回php容器内,docker-php-ext-install mysqli
刮刮乐
docker run --restart=always -p 9000:9000 --name php -v /www/web:/www/web --privileged=true -idt hayate/php:7.2.0225.01
docker run --restart=always -itd --name nginx -p 80:80 -p 443:443 -p 888:888 -v /www/serverlog/nginx:/www/serverlog/nginx -v /www/serverdata/nginx:/www/serverdata/nginx -v /www/serverconf/nginx:/www/serverconf/nginx -v /www/web:/www/web --privileged=true --link php:php --volumes-from php hayate/centos7.2/nginx:1.18.0226.01 /start.sh
docker run --restart=always -p 3306:3306 --name mysql -v /www/serverconf/mysql:/etc/mysql -v /www/serverlog/mysql:/logs -v /www/serverdata/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=seLyMeCdkA38phSH -itd mysql:5.7
补充部分:
对于单php-fpm形式部署多站点,暂时不清楚不同端口如何区分,统一端口的话,按照普通服务器方式配置即可。