在 CentOS 系统下编写 Dockerfile 创建包含 Nginx、PHP 和 MySQL 的环境镜像,流程与之前类似。以下是在 CentOS 系统下编写 Dockerfile 的示例:
/var/www/html
目录下创建一个dockerfile文件,将以下内容保存到文件内:# 使用官方的CentOS作为基础镜像
FROM centos:latest
# 设置非交互式安装,避免在安装过程中出现交互提示
ENV DEBIAN_FRONTEND=noninteractive
# 安装所需软件(此处使用yum包管理器)
RUN yum update -y && \
yum install -y epel-release && \
yum install -y nginx php php-fpm php-mysql mariadb-server
# 配置Nginx
COPY nginx-default /etc/nginx/conf.d/default.conf
# 配置PHP-FPM
RUN sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php.ini
# 设置工作目录
WORKDIR /var/www/html
# 复制PHP应用到工作目录
COPY app /var/www/html
# 暴露Nginx端口
EXPOSE 80
# 启动Nginx和PHP-FPM
CMD service php-fpm start && nginx -g "daemon off;"
nginx-default
的 Nginx 配置文件:server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
在同一文件夹中创建一个名为 app
的文件夹,并在其中放置您的 PHP 应用程序文件。
在同一文件夹中运行以下命令构建镜像:
docker build -t centos-nginx-php-mysql .
docker run -d -p 8080:80 --name my-web-app centos-nginx-php-mysql
与之前一样,此示例仅用于演示目的。在实际生产环境中,您应该根据需要进行优化,添加安全性措施以及确保数据库数据的持久化。