dockerfile编写lnmp环境镜像

文章发布于 2023-08-29

在 CentOS 系统下编写 Dockerfile 创建包含 Nginx、PHP 和 MySQL 的环境镜像,流程与之前类似。以下是在 CentOS 系统下编写 Dockerfile 的示例:

  1. /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;"
  1. 在同一文件夹中创建名为 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;
    }
}
  1. 在同一文件夹中创建一个名为 app 的文件夹,并在其中放置您的 PHP 应用程序文件。

  2. 在同一文件夹中运行以下命令构建镜像:

docker build -t centos-nginx-php-mysql .
  1. 构建完成后,您可以使用以下命令运行容器:
docker run -d -p 8080:80 --name my-web-app centos-nginx-php-mysql

与之前一样,此示例仅用于演示目的。在实际生产环境中,您应该根据需要进行优化,添加安全性措施以及确保数据库数据的持久化。