共计 3149 个字符,预计需要花费 8 分钟才能阅读完成。
一、需求
需求是制作一个能处理 php 脚本文件的 nginx 服务器,通过传递不同的 nginx 和 php 版本进行相应的构建。
二、实战
1、创建所需 nginx 配置文件
touch nginx.conf && cat > nginx.conf <<EOF
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/html/;
index index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
EOF
2、同级别目录下创建 dockerfile 文件
FROM ubuntu:20.04
LABEL AUTHOR="www.amjun.com" EMAIL="1532246395@qq.com"
ARG DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Shanghai \
PHP_VERSION="7.4.29" \
NGINX_VERSION="1.19.0"
RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && apt update && \
apt install -y wget make gcc libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev \
libzip-dev bison autoconf build-essential pkg-config git-core \
libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev \
libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev \
libreadline-dev libcurl4-openssl-dev librecode-dev libsqlite3-dev libonig-dev php-pear
RUN wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \
tar -zxvf nginx-${NGINX_VERSION}.tar.gz -C /tmp && \
useradd -s /sbin/nologin nginx && \
mkdir -p /usr/local/nginx && cd /tmp/nginx-${NGINX_VERSION} && \
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-stream --with-http_ssl_module --with-http_stub_status_module && \
make && make install && \
wget https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz && \
tar -zxvf php-${PHP_VERSION}.tar.gz -C /tmp && \
cd /tmp/php-${PHP_VERSION} && \
./configure --prefix=/usr/local/php7 --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-config-file-path=/usr/local/php7/etc --enable-fpm && \
make && make install && \
groupadd nobody && \
echo "${TZ}" > /etc/timezone && \
ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf && \
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf && \
cp /tmp/php-${PHP_VERSION}/php.ini-production /usr/local/php7/etc/php.ini && \
rm -rf /tmp/* && rm -rf nginx-${NGINX_VERSION}.tar.gz && rm -rf php-${PHP_VERSION}.tar.gz && \
rm -rf /var/lib/apt/lists/*
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
ENV PATH="/usr/local/php7/bin:/usr/local/php7/sbin:/usr/local/nginx/sbin:${PATH}"
WORKDIR /var/www/html/
CMD php-fpm && nginx -g "daemon off;"
3、构建镜像
docker build -t nginx-php --build-arg NGINX_VERSION="1.19.1" --build-arg PHP_VERSION="7.4.30" .
nginx 配置文件里面配置的网站根目录为 /var/www/html,只需要把网站放在该目录下即可。
提醒:本文发布于830天前,文中所关联的信息可能已发生改变,请知悉!
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完