Commit 34fb44ca authored by Li Mi's avatar Li Mi

尝试构建

parent 03052c59
name: 构建容器镜像
# 触发条件:在 push 到 master 分支后
on:
push:
paths:
- "php-fpm/**"
# 任务
jobs:
build-php-fpm-73:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v2
- name: 构建 PHP-FPM-73 镜像
uses: docker/build-push-action@v1
with:
username: ${{ secrets.TKE_USERNAME }}
password: ${{ secrets.TKE_PASSWORD }}
path: ./php-fpm
dockerfile: ./php-fpm/Dockerfile.php.73
registry: ccr.ccs.tencentyun.com
repository: gzzchh/stacks
tags: php-fpm-73
build-php-fpm-74:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v2
- name: 构建 PHP-FPM-74 镜像
uses: docker/build-push-action@v1
with:
username: ${{ secrets.TKE_USERNAME }}
password: ${{ secrets.TKE_PASSWORD }}
path: ./php-fpm
dockerfile: ./php-fpm/Dockerfile.php.73
registry: ccr.ccs.tencentyun.com
repository: gzzchh/stacks
tags: php-fpm-74
FROM php:7.3-fpm
# COPY pip.conf /root/.pip/pip.conf
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
# RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list && \
# sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list && \
RUN cat /etc/apt/sources.list && \
# 系统更新
DEBIAN_FRONTEND=noninteractive && \
apt update && apt upgrade -y &&\
# 安装组件
apt install -y --no-install-recommends \
bash \
unzip \
openssh-client \
wget \
curl \
libcurl4 \
#imap-dev \
openssl \
git \
python3 \
augeas-lenses \
ca-certificates \
dialog \
autoconf \
make \
gcc \
# 构件时依赖
python3-dev \
libzip-dev \
libbz2-dev \
libcurl4-openssl-dev \
libmcrypt-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libxslt-dev \
libffi-dev \
libsqlite3-dev \
libpq-dev \
python3-pip && \
# 扩展安装
docker-php-ext-configure gd && \
docker-php-ext-install -j$(nproc) iconv pdo_mysql pdo_sqlite pgsql pdo_pgsql mysqli gd exif intl xsl json soap dom zip opcache bcmath && \
pecl install xdebug && \
pecl install runkit7-alpha && \
pecl install uopz && \
pecl install -o -f redis && \
echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini && \
# Imagick
chmod uga+x /usr/local/bin/install-php-extensions && sync && \
install-php-extensions imagick && \
docker-php-source delete && \
# Composer相关部分
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --quiet --install-dir=/usr/bin --filename=composer && \
rm composer-setup.php && \
# composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/ && \
# composer global require hirak/prestissimo && \
# composer global require slince/composer-registry-manager ^2.0 && \
# composer repo:use tencent && \
# composer clearcache && \
# Python设定
# update-alternatives --install /usr/bin/python python /usr/bin/python3 1 && \
# update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 && \
# pip3 install -U pip && \
# 清理
apt remove gcc augeas-lenses python3-dev make autoconf -y && apt autoremove -y && \
apt remove -y \
libzip-dev \
libbz2-dev \
libcurl4-openssl-dev \
libmcrypt-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libxslt-dev \
libffi-dev \
libsqlite3-dev \
libpq-dev && \
rm -rf /var/lib/apt/lists/* && \
# 处理用户的部分
addgroup --gid 1000 www && \
adduser --disabled-password --gecos "" --uid 1000 --gid 1000 www
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
FROM php:7.4-fpm
# COPY pip.conf /root/.pip/pip.conf
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
# RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list && \
# sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list && \
RUN cat /etc/apt/sources.list && \
# 系统更新
DEBIAN_FRONTEND=noninteractive && \
apt update && apt upgrade -y &&\
# 安装组件
apt install -y --no-install-recommends \
bash \
unzip \
openssh-client \
wget \
curl \
libcurl4 \
#imap-dev \
openssl \
git \
python3 \
augeas-lenses \
ca-certificates \
dialog \
autoconf \
make \
gcc \
# 构件时依赖
python3-dev \
libzip-dev \
libbz2-dev \
libcurl4-openssl-dev \
libmcrypt-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libxslt-dev \
libffi-dev \
libsqlite3-dev \
libpq-dev \
python3-pip && \
# 扩展安装
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install -j$(nproc) iconv pdo_mysql pdo_sqlite pgsql pdo_pgsql mysqli gd exif intl xsl json soap dom zip opcache bcmath && \
pecl install xdebug && \
pecl install runkit7-alpha && \
pecl install uopz && \
pecl install -o -f redis && \
echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini && \
# echo "extension=runkit7.so" > /usr/local/etc/php/conf.d/runkit7.ini && \
# Imagick
chmod uga+x /usr/local/bin/install-php-extensions && sync && \
install-php-extensions imagick && \
docker-php-source delete && \
# Composer相关部分
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --quiet --install-dir=/usr/bin --filename=composer && \
rm composer-setup.php && \
# composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/ && \
# composer global require hirak/prestissimo && \
# composer global require slince/composer-registry-manager ^2.0 && \
# composer repo:use tencent && \
# composer clearcache && \
# Python设定
# update-alternatives --install /usr/bin/python python /usr/bin/python3 1 && \
# update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 && \
# pip3 install -U pip && \
# 清理
apt remove gcc augeas-lenses python3-dev make autoconf -y && apt autoremove -y && \
apt remove -y \
libzip-dev \
libbz2-dev \
libcurl4-openssl-dev \
libmcrypt-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libxslt-dev \
libffi-dev \
libsqlite3-dev \
libpq-dev && \
rm -rf /var/lib/apt/lists/* && \
# 处理用户的部分
addgroup --gid 1000 www && \
adduser --disabled-password --gecos "" --uid 1000 --gid 1000 www
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
NAME_CN = ccr.ccs.tencentyun.com/${NAME}
NAME =${NAME}
# .PHONY: build start push
build: build-php-fpm-73 build-php-fpm-74
tag: tag-php-fpm-73 tag-php-fpm-74
push-cn: push-cn-php-fpm-73 push-cn-php-fpm-74
push: push-php-fpm-73 push-php-fpm-74
build-php-fpm-73:
docker build -t ${NAME_CN}:php-fpm-73 --network private -f Dockerfile.php.73 .
build-php-fpm-74:
docker build -t ${NAME_CN}:php-fpm-74 --network private -f Dockerfile.php.74 .
tag-php-fpm-73:
docker tag ${NAME_CN}:php-fpm-73 ${NAME}:php-fpm-73
tag-php-fpm-74:
docker tag ${NAME_CN}:php-fpm-74 ${NAME}:php-fpm-74
push-cn-php-fpm-73:
docker push ${NAME_CN}:php-fpm-73
push-cn-php-fpm-74:
docker push ${NAME_CN}:php-fpm-74
push-php-fpm-73:
docker push ${NAME}:php-fpm-73
push-php-fpm-74:
docker push ${NAME}:php-fpm-74
all: build tag push-cn push
\ No newline at end of file
version: "3"
services:
php73:
restart: always
container_name: php73
image: ccr.ccs.tencentyun.com/gzzchh/stacks:php-fpm-73
volumes:
# 首先我们挂载主配置文件
- ./php73/php.ini:/usr/local/etc/php/php.ini
- ./php73/php-fpm.conf:/usr/local/etc/php-fpm.conf
# 然后直接覆盖整个php-fpm.d
- ./php73/php-fpm.d:/usr/local/etc/php-fpm.d
# 接下来是对外挂载Sock
- /tmp/php/php73:/tmp/php
# 还有Log目录
- ./log/php73:/var/log/php
# 以下是因版本而异的
# 首先把扩展挂载进去
- ./php73/ext:/usr/local/lib/php/extensions/ext
# 加载配置文件,注意要一个一个加载
- ./php73/php.d/00-ioncube.ini:/usr/local/etc/php/conf.d/00-ioncube.ini
- /data/wwwroot:/data/wwwroot
php74:
restart: always
container_name: php74
image: ccr.ccs.tencentyun.com/gzzchh/stacks:php-fpm-74
volumes:
# 首先我们挂载主配置文件
- ./php74/php.ini:/usr/local/etc/php/php.ini
- ./php74/php-fpm.conf:/usr/local/etc/php-fpm.conf
# 然后直接覆盖整个php-fpm.d
- ./php74/php-fpm.d:/usr/local/etc/php-fpm.d
# 接下来是对外挂载Sock
- /tmp/php/php74:/tmp/php
# 还有Log目录
- ./log/php74:/var/log/php
- /data/wwwroot:/data/wwwroot
#!/bin/sh
# 目录Bug修复
mkdir -p /home/www
# composer开始处理
/usr/bin/composer global install
# 刷新系统的CA
update-ca-certificates
if [ -z $RUN_AS ];then
# 空,运行php-fpm
echo "未指定运行模式,将运行PHP-FPM"
echo "提示:运行模式可选[FPM|CLI|COMPOSER]"
php-fpm
else
case $RUN_AS in
FPM)
php-fpm
;;
CLI)
php
;;
COMPOSER)
composer
;;
*)
echo "Usage: $name [FPM|CLI|COMPOSER]"
exit 0
;;
esac
fi
[global]
pid = /tmp/php-fpm.pid
error_log = /var/log/php/global.error.log
log_level = notice
log_limit = 4096
daemonize = no
events.mechanism = epoll
emergency_restart_threshold = 60
emergency_restart_interval = 60s
rlimit_files = 51200
include=/usr/local/etc/php-fpm.d/*.conf
\ No newline at end of file
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
listen = /tmp/php/php-fpm-www.sock
listen.owner = www
listen.group = www
user = www
group = www
pm = dynamic
pm.max_children = 256
pm.start_servers = 32
pm.min_spare_servers = 16
pm.max_spare_servers = 64
pm.max_requests = 500
request_terminate_timeout = 0
slowlog = /var/log/php/$pool.slow.log
php_admin_value[error_log] = /var/log/php/$pool.error.log
zend_extension=/usr/local/lib/php/extensions/ext/ioncube_loader_lin_7.3.so
\ No newline at end of file
This diff is collapsed.
[global]
pid = /tmp/php-fpm.pid
error_log = /var/log/php/global.error.log
log_level = notice
log_limit = 4096
daemonize = no
events.mechanism = epoll
emergency_restart_threshold = 60
emergency_restart_interval = 60s
rlimit_files = 51200
include=/usr/local/etc/php-fpm.d/*.conf
\ No newline at end of file
; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
listen = /tmp/php/php-fpm-www.sock
listen.owner = www
listen.group = www
user = www
group = www
pm = dynamic
pm.max_children = 256
pm.start_servers = 32
pm.min_spare_servers = 16
pm.max_spare_servers = 64
pm.max_requests = 500
request_terminate_timeout = 0
slowlog = /var/log/php/$pool.slow.log
php_admin_value[error_log] = /var/log/php/$pool.error.log
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment