docker php8.1+nginx base 镜像 dockerfile 配置

这个是docker 配置的base dockerfile 如果搭建php+nginx 环境,可以直接使用这个dockerfile配置。直接在你代码里面的dockerfile 引用此基础镜像。

# 使用官方的 PHP 镜像作为基础镜像
FROM php:8.1-fpm

# 更换国内源并安装系统依赖

RUN rm -rf /etc/apt/sources.list.d/* \
   && echo 'deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware' > /etc/apt/sources.list \
   && echo 'deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && echo 'deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware' >> /etc/apt/sources.list \
   && apt-get update \
    && apt-get install -y \
        locales \
        nginx \
        libpng-dev \
        libjpeg-dev \
        libonig-dev \
        libxml2-dev \
        zip \
        unzip \
        libzip-dev \
        libmcrypt-dev \
        libssl-dev \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        freetds-dev \
        libcurl4-openssl-dev \
        libsnmp-dev \
        libicu-dev \
        libc-client-dev \
        libkrb5-dev \
        libmemcached-dev \
        libbz2-dev \
        libtidy-dev \
        libxslt-dev \
        wget \
        curl \
        cron \
        supervisor \
    && sed -i '/zh_CN.UTF-8/s/# //g' /etc/locale.gen \
    && locale-gen zh_CN.UTF-8 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 设置环境变量以使用中文区域设置
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8

# 安装 PHP 扩展
RUN docker-php-ext-install \
        bcmath \
        bz2 \
        calendar \
        exif \
        gd \
        gettext \
        mysqli \
        opcache \
        pdo \
        pdo_mysql \
        snmp \
        soap \
        sockets \
        tidy \
        xml \
        xsl \
        zip

# 下载并安装 Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    && mkdir /composer \
    && chown www-data:www-data /composer \
    && chmod 755 /composer

# 设置 Composer 全局路径
ENV COMPOSER_HOME=/composer
ENV PATH=/composer/vendor/bin:$PATH

# 安装 Redis 和 Yaf 扩展
RUN pecl install redis \
    && docker-php-ext-enable redis \
    && pecl install yaf \
    && docker-php-ext-enable yaf

# 设置权限和目录
RUN chown www-data:www-data /var/www/html \
    && chmod 755 /var/www/html \
    && mkdir /etc/nginx/conf.d/ssl \
    && chmod 755 /etc/nginx/conf.d/ssl

# 复制supervisord配置文件
COPY supervisord.conf /etc/supervisor/supervisord.conf

# 暴露容器的 80 和 443 端口
EXPOSE 80 443

# 启动 PHP-FPM 和 Nginx 服务
#CMD /etc/init.d/nginx start && /usr/local/sbin/php-fpm  -D && tail -f /dev/null

下面是supervisord 配置。用suervisord 控制PHP-fpm 和nginx 的启动

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[program:php-fpm]
command = /usr/local/sbin/php-fpm --force-stderr --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
autostart=true
autorestart=true
priority=5
stdout_events_enabled=true
stderr_events_enabled=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
stopsignal=QUIT

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
autostart=true
autorestart=true
priority=10
stdout_events_enabled=true
stderr_events_enabled=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
stopsignal=QUIT

直接把这两份配置上传到你的服务器里面。然后执行下面的命令

docker build -t php-nginx -f /home/data/dockerfile/prod/Dockerfile .

php-nginx 是镜像的名字

/home/data/dockerfile/prod/Dockerfile 是dockerfile 文件路径

最后的点一定要加上。

base 镜像编辑好后,可以上传到阿里云的免费的镜像容器服务。然后在docker部署的时候引用此基础镜像就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab得到无背景透明图片

注意:本方法是复制得到透明图片,不是保存得到透明图 !!! matlab画图 设置窗口属性背景为“无”,可以代码设置,也可以在图窗属性里编辑 在:“工具”菜单子菜单中单击“复制属性”&…

利用代理IP爬取当当网数据做数据分析

利用代理IP爬取当当网(或其他任何网站)的数据进行数据分析是一个涉及多个步骤和技术的过程。这个过程需要谨慎处理,以确保遵守相关法律法规和网站的robots.txt文件以及服务条款,避免给网站服务器带来不必要的负担,以及防止自己的IP地址被封禁。以下是实现这一过程的一般步…

探索NVM:让Node.js开发如虎添翼的利器

文章目录 前言一、NVM简介:版本管理的瑞士军刀二、NVM能解决什么问题?三、如何使用NVM​?总结 前言 在这个日新月异的编程世界里,Node.js凭借其高效的非阻塞I/O操作和轻量级的事件驱动模型,成为了全栈开发、微服务架构…

音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现

一、引言 通过FFmpeg命令可以判断出某个文件是否为AnnexB格式的H.264裸流: 所以FFmpeg是怎样判断出某个文件是否为AnnexB格式的H.264裸流呢?它内部其实是通过h264_probe函数来判断的。从文章《FFmpeg源码:av_probe_input_format3函数分析》中…

winfrom 文件自动生成

数据页面展示 添加定时器执行每个表数据的生成计划 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using …

数据结构代码

文章目录 线性表的插入线性表的删除单链表的建立栈的顺序存储队列的顺序存储串的顺序存储树的存储二叉树遍历前序遍历中序遍历后序遍历 二分法插入排序利用普里姆算法构造最小生成树 线性表的插入 #a: 列表,pos: 要插入的位置,key: 要插入的数据&#x…

github搜索指令

in:根据某个关键词进行检索 关键词: name:项目名称 description:项目描述 readma:项目帮助文档 语法: 需要检索的内容:in:name或description或readme 单独使用: (1)例如:检索项目…

【STM32嵌入式系统设计与开发---拓展】——1_11_1串口通信(USART)

这里写目录标题 1、一般我们都怎么进行通信的?(1)串行通行(Serial Communication)(2)并行通信(3)无线网络通信(4)网络通信(5&#xff…

Django [实战] 通过表单上传文件

在Django中上传文件通常涉及到以下几个步骤: 设置你的模型以包含一个FileField或ImageField(如果上传的是图片)。创建一个表单,该表单包含一个Form或ModelForm,其中包含一个FileField。在你的视图中处理上传的文件。在…

Modbus转BACnet/IP网关快速对接Modbus协议设备与BA系统

摘要 在智能建筑和工业自动化领域,Modbus和BACnet/IP协议的集成应用越来越普遍。BA(Building Automation,楼宇自动化)系统作为现代建筑的核心,需要高效地处理来自不同协议的设备数据,负责监控和管理建筑内…

可以免费合并pdf的软件 合并pdf文件的软件免费 合并pdf的软件免费

在数字化办公的今天,pdf格式因其稳定性和跨平台兼容性被广泛使用。然而,当我们需要将多个 pdf 文件合并为一个时,却往往感到力不从心。本文将为你介绍几款强大的pdf文件合并软件,让你轻松管理文档。 方法一、使用pdf转换器 步骤1…

使用Spring Boot实现居民身份证合法性验证

使用Spring Boot实现居民身份证合法性验证 在现代社会中,身份证号码的合法性验证是很多系统中不可或缺的一部分。身份证号码用于确认个人身份,其格式和校验机制各不相同。本文将介绍如何使用Spring Boot构建一个通用控制器,通过API来验证中国…

easyExcel和poi的版本对应

easypoi3.0.5对应的poi版本_easypoi和poi版本对应-CSDN博客 https://github.com/alibaba/easyexcel/blob/v3.2.0/pom.xml 解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错-CSDN博客 参考这个文档解决的- 引入最佳版本是3.15版本 java.lang.NoClas…

微服务:网关

网关 网关,即网络的关口,当一个网络传输到另一个网络时就需要经过网关来实现 数据的路由和转发 以及 数据安全的校验 网关技术实现 SpringCloudGateWay: 基于Spring的WebFlux技术,完全支持响应式编程,吞吐能力更强 SpringCloudGateWay 依赖 <!--网关--><depe…

【Rust光年纪】数据科学与机器学习:深入了解Rust语言中的6个关键库

Rust语言中的数据科学和机器学习&#xff1a;六大库全面解析 前言 随着Rust语言的不断发展&#xff0c;越来越多的优秀库和框架涌现出来&#xff0c;为不同领域的开发者提供了丰富的选择。本文将介绍一些适用于Rust语言的机器学习、数据处理和自然语言处理领域的优秀库和框架…

JAVA毕业设计152—基于Java+Springboot+vue+小程序的个人健康管理系统小程序(源代码+数据库+15000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue小程序的个人健康管理系统小程序(源代码数据库15000字论文)152 一、系统介绍 本项目前后端分离带小程序(可以改为ssm版本)&#xff0c;分为用户、管理员两种…

Ubuntu下载jdk:cannot execute binary file

虚拟机上Ubuntu系统安装jdk且配置环境之后&#xff0c;java -version显示cannot execute binary file&#xff0c;多番查阅推测是由于系统和jdk版本不兼容的原因。 uname -m查看系统版本位i686&#xff0c;是32位的&#xff0c;和64位的jdk版本不兼容。因此&#xff0c;下载32位…

Postman与WebSockets:实时通信的桥梁

Postman与WebSockets&#xff1a;实时通信的桥梁 在当今的Web应用中&#xff0c;实时通信变得越来越重要。WebSockets提供了一种在单个连接上进行全双工通信的方法&#xff0c;允许服务器和客户端之间进行实时数据交换。Postman&#xff0c;作为一款强大的API开发和测试工具&a…

阻止 chrome “[保存并填写地址](chrome://settings/addresses)“ 导致输入框聚焦时出现候选项

参考 禁止浏览器自动填充到表单 的这个回答 代码 要求将不可见的input框放在页面的最前面&#xff0c;如body起始处&#xff0c; chrome之类的浏览器会填充最前面的输入框。 <!-- 阻止浏览器的自动填充 --> <input type"text" name"_prevent_auto_co…

[css3] 如何设置边框颜色渐变

div {border: 4px solid;border-image: linear-gradient(to right, #8f41e9, #578aef) 1; }参考&#xff1a; 5种CSS实现渐变色边框&#xff08;Gradient borders方法的汇总