首页 > 编程语言 >构建PHP容器

构建PHP容器

时间:2022-10-31 03:44:13浏览次数:87  
标签:容器 php RUN -- dev 构建 docker PHP curl

文档说明:只记录关键地方;

构建脚本 php-cli-alpine

#!/bin/sh
set -ux 

TIME=`date -u '+%Y%m%dT%H%M%SZ'`
VERSION="7.4-cli-alpine-"${TIME}
IMAGE="wenba100xie/php:${VERSION}"
export DOCKER_BUILDKIT=1

# 使用代理 需要传递两个参数
# sh build-docker.sh --proxy 1
PROXY_URL=${2:+'http://192.168.3.26:8015'}

docker build -t ${IMAGE} -f Dockerfile . --progress=plain --build-arg PROXY_URL=$PROXY_URL
docker push ${IMAGE}

构建之前查看基础镜像默认配置


docker run --rm  php:7.4-cli-alpine php -i | grep php.ini
docker run --rm  php:7.4-cli-alpine php -m 

构建php cli

FROM php:7.4-cli-alpine

RUN sed -i "[email protected]/@mirrors.tuna.tsinghua.edu.cn/@g" /etc/apk/repositories
RUN uname -a
RUN apk update && apk add --no-cache    ca-certificates openssl openssl-dev
RUN apk add  --no-cache \
      freetype \
      freetype-dev \
      jpeg \
      libpng \
      libwebp \
      libpng \
      libpng-dev \
      libjpeg-turbo \
      libjpeg-turbo-dev \
      gd-dev \
      zlib-dev \
      gmp \
      gmp-dev \
      glib \
      glib-dev \
      libzip-dev \
      postgresql-dev \
      tini

RUN apk add build-base autoconf curl 
#RUN addgroup -g 1000 -S nginx && adduser -u 1000 -S nginx -G nginx -s /sbin/nologin

ARG PROXY_URL=''

ENV http_proxy=$PROXY_URL
ENV https_proxy=$PROXY_URL

RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

RUN pear config-set http_proxy $PROXY_URL
RUN pecl channel-update https://pecl.php.net/channel.xml
RUN pear update-channels



WORKDIR /

RUN pecl install redis
RUN pecl install mongodb
RUN pecl install swoole

# curl ssl 证书
# https://curl.haxx.se/docs/caextract.html curl ssl 证书下载网址

RUN curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' -o /usr/local/etc/php/cacert.pem

ENV http_proxy=""
ENV https_proxy=$http_proxy
RUN pear config-set http_proxy ""

# 启用扩展
RUN  docker-php-ext-enable redis
RUN  docker-php-ext-enable mongodb
RUN  docker-php-ext-enable swoole


# php 源码所在目录 /usr/src/php

RUN docker-php-source extract
RUN docker-php-ext-install gd   pdo_mysql pdo_pgsql sockets  bcmath gmp zip


# /usr/local/etc/php/php.ini

RUN docker-php-source delete


ENV TZ=Etc/UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' -o /etc/php/cacert.pem
 
RUN curl -Lo /usr/local/bin/composer https://mirrors.aliyun.com/composer/composer.phar
RUN chmod a+x /usr/local/bin/composer


RUN rm -rf /var/cache/apk/* /tmp

WORKDIR /

# USER 1000:1000

构建脚本 php-fpm-alpine

#!/bin/sh
set -ux 

TIME=`date -u '+%Y%m%dT%H%M%SZ'`
VERSION="7.4-fpm-alpine-"${TIME}
IMAGE="wenba100xie/php:${VERSION}"
export DOCKER_BUILDKIT=1

# 使用代理 需要传递两个参数
# sh build-docker.sh --proxy 1
PROXY_URL=${2:+'http://192.168.3.26:8015'}

docker build -t ${IMAGE} -f Dockerfile . --progress=plain --build-arg PROXY_URL=$PROXY_URL
docker push ${IMAGE}

构建之前查看基础镜像默认配置


docker run --rm --name php-fpm   php:7.4-fpm-alpine
docker exec -i php-fpm   php -i | grep php.ini
docker exec -i php-fpm php -m 

构建php php-fpm

FROM php:7.4-fpm-alpine

RUN sed -i "[email protected]/@mirrors.tuna.tsinghua.edu.cn/@g" /etc/apk/repositories
RUN uname -a
RUN apk update && apk add --no-cache    ca-certificates openssl openssl-dev
RUN apk add  --no-cache \
      freetype \
      freetype-dev \
      jpeg \
      libpng \
      libwebp \
      libpng \
      libpng-dev \
      libjpeg-turbo \
      libjpeg-turbo-dev \
      gd-dev \
      zlib-dev \
      gmp \
      gmp-dev \
      glib \
      glib-dev \
      libzip-dev \
      postgresql-dev \
      tini

RUN apk add build-base autoconf curl 
#RUN addgroup -g 1000 -S nginx && adduser -u 1000 -S nginx -G nginx -s /sbin/nologin

ARG PROXY_URL=''

ENV http_proxy=$PROXY_URL
ENV https_proxy=$PROXY_URL

RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

RUN pear config-set http_proxy $PROXY_URL
RUN pecl channel-update https://pecl.php.net/channel.xml
RUN pear update-channels



WORKDIR /

RUN pecl install redis
RUN pecl install mongodb


# curl ssl 证书
# https://curl.haxx.se/docs/caextract.html curl ssl 证书下载网址

RUN curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' -o /usr/local/etc/php/cacert.pem

ENV http_proxy=""
ENV https_proxy=$http_proxy
RUN pear config-set http_proxy ""

# 启用扩展
RUN  docker-php-ext-enable redis
RUN  docker-php-ext-enable mongodb



# php 源码所在目录 /usr/src/php

RUN docker-php-source extract
RUN docker-php-ext-install gd   pdo_mysql pdo_pgsql sockets  bcmath gmp zip


# /usr/local/etc/php/php.ini

RUN docker-php-source delete


ENV TZ=Etc/UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' -o /etc/php/cacert.pem
 
RUN curl -Lo /usr/local/bin/composer https://mirrors.aliyun.com/composer/composer.phar
RUN chmod a+x /usr/local/bin/composer


RUN rm -rf /var/cache/apk/* /tmp

WORKDIR /

# USER 1000:1000

参考文档

  1. hub docker php
  2. github docker php
  3. hub docker php
  4. hub docker nginx
  5. curl ssl 证书
  6. PHP四种设置回调函数的方式
  7. Unix 系统下的安装
  8. php docs
  9. php 所支持的时区列表
  10. 阿里云 Composer 全量镜像
  11. 最新的 Composer 版本
  12. PHP packagist.org
  13. PHP 搜扩展包
  14. symfony
  15. laravel/laravel
  16. Dockerfile
  17. Compose file
  18. Tini作为Docker容器的init进程,tini 解决僵尸进程

标签:容器,php,RUN,--,dev,构建,docker,PHP,curl
From: https://www.cnblogs.com/jingjingxyk/p/16841551.html

相关文章

  • Spring-day02 容器的概念,容器中的对象,IOP入门
    springSpring框架是什么Spring是于2003年兴起的一个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IoC)和面向切面编......
  • Docker使用中相关清理命令:删除容器与镜像
    在构建Docker镜像的过程中,会产生一些无用的窗口与镜像;在构建过程中也可能会遇到失败,需要进行清理。删除容器与镜像,一般需要先停止在运行中的容器。杀死所有正在运行的容......
  • Spring Framework之IOC容器的扩展点(TODO)
    坑,待填参考:​​​扩展Spring的几种方式​​​Spring中Bean的生命周期及其扩展点[Spring]Spring容器扩展点​​spring之扩展点​​SpringContainer的扩展点​​Spring架构......
  • php yield详解
     一.介绍  二.简单例子//包含yield的函数可以生成一个generator对象,可以被foreach遍历functionGenerator(){for($i=0;$i<3;$i++){echo"输出存在......
  • pikachu php反序列化漏洞
    原理php中serialize(),unserialize()这两个函数。序列化serialize()序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:classS{publ......
  • Go 容器之队列的几种实现方式
    1队列的概念队列是有序集合,遵循FIFO(Firstinfirstout,即先进先出)排队方法的容器。添加操作发生在队列的尾部,移除操作则发生在头部。新元素从尾部进入队列,然后一直向前移......
  • 【博学谷学习记录】超强总结,用心分享|Python容器详解
    一、Python中容器的介绍容器:也可以称为是数据序列,或者高级数据类型,也是Python中的数据类型。容器中可以存放多个数据。Python中常用的容器有4种:list(列表)、......
  • 进入Pod中的容器
    查看帮助一、pod中只有1用户容器#只有一个容器时,进入时不需要指定容器,因为就是只有一个#test-pod为pod名称kubectlexec-ittest-pod-ntest--/bin/sh二、pod......
  • php 读取 csv 转数组列表
    我们有个文档需要修改,但是文档列太多,以及数量太大,以至于眼睛看起来很吃力,于是我决定做个简单的转化用脚本读取我想要验证的列的内容是否正确.于是就产生了一个这样将csv......
  • nginx容器与php容器连接
    文档说明:只记录关键地方;试验环境:linuxdebian11目标:nginx容器与php容器连接构建PHP容器curl-fsSL'https://curl.haxx.se/ca/cacert.pem'-o/usr/local/etc/p......