1. Solon 框架, SnowyLite 脚手架,entity 对象属性驼峰命名,在Window 和 Linux 下处理结果不同,原因待查找,
作者: admin
正则表达式-常用
^(?!#).+$
功能: 第一个字符不是#且非空行
解释:
^:表示匹配行的开头。
(?!#):负向前瞻,确保接下来的字符 不是 #。
.+:表示匹配至少一个字符(确保不是空行)。+ 表示至少匹配一个字符,. 表示匹配任意字符(除换行符外)。
$:表示匹配行的结尾。
github-content-proxy-SwitchyOmega
//==SwitchyOmega
https://github.com/FelisCatus/SwitchyOmega
//==gfwlist , https://ghproxy.link/
https://ghp.ci/https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txthttps://ghfast.top/https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
https://gh-proxy.com/raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
export GH_PROXY=https://ghfast.top/
https://ghfast.top/
https://ghproxy.link/
//==Plink-Proxy,8.8.8.8 is example-host
PLINK.EXE -X -v -ssh -2 -4 -agent -C root@8.8.8.8 -P 22 -D 127.0.0.1:7788 -N -i ./8.8.8.8.ppk
Dockerfile_apnode_20240723
############
# apnode/apnode 常用工具,supervisor , jdk11, 带有ed,adminer 文件,php-composer 对应 php83
# apnode/apsdk 完整工具包, jdk-11,maven,nodejs-20,php-83,php-composer,
# apnode/php8 常用工具 单语言
# apnode/jdk8 常用工具 单语言
############
# 2024-0326, 切换配置目录到 /.config/
# 2024-0430, node 添加 libc6-compat,
# 2024-0619, 添加 openvscode-server-v1.90.1
# 2024-0723, 修改nginx启动用户为 root, 默认jdk改为jdk11,
# 默认分base和full版本,apnode, 包含程序文件和启动命令
############
# 编译 测试 apnode
# docker build -t apnode:20240723 -f dockerfile/apnode.20240723.Dockerfile .
# docker tag apnode:20240723 apnode/apnode
# docker push apnode/apnode
############
# docker tag apnode:20240723 apnode
# docker run -d -v $(pwd):/code -v /app:/app --restart=unless-stopped --privileged=true --net=host --name=ap apnode
# docker run -d -v /app:/app --restart=unless-stopped --privileged=true -p 80:80 -p 443:443 --name=nginx apnode nginx -g "daemon off;"
# docker run -d -v $(pwd):/code -v /app:/app --restart=unless-stopped --privileged=true -p 9000:9000 --name=pems apnode java -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=utf-8 -Dserver.port=9000 -Dsolon.config.add=./demo.yml -jar ./user-web-2.0.0.jar
############
# docker run -it -d --restart=unless-stopped --net=host --name=test -v /app:/app alpine:3.19.1 sh
# docker exec -it test sh
# docker container stats --no-stream
# docker system df -v
# docker login
############
#编译模板 base
# docker build -t apnode/base -f ./Dockerfile.apnode.base .
# docker push apnode/base
############
############
FROM alpine:3.20.0
############
# 1. 设置中国时区镜像, 中文字库,nano,vim,tini,curl, wget, 扩展软件库
RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --update --no-cache add tzdata ttf-dejavu font-opensans fontconfig curl wget ca-certificates nano vim tini util-linux util-linux-misc icu-data-full alpine-conf && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && fc-cache --force && rm -rf /var/cache/apk/*
###########
# 2. 安装常用工具 git ,zip ,ssh ,nc
# apk fetch --recursive --simulate supervisor supervisor-openrc
# RUN apk add --update --no-cache util-linux git htop zip unzip p7zip netcat-openbsd dropbear-scp dropbear-ssh dropbear-dbclient dropbear-convert && rm -rf /var/cache/apk/*
RUN apk add --update --no-cache openssh-client-default openssh-client-common openssh-keygen git htop zip unzip p7zip netcat-openbsd frp && mkdir -p /code && rm -rf /var/cache/apk/*
############
# 2.1 安装 supervisor , 需要 python3 , 切换配置目录到 /.config/
RUN apk add --update --no-cache supervisor py3-pip && mkdir -p /code && mkdir -p /app && mkdir -p /.config/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true/' /etc/supervisord.conf && echo 'files = /.config/supervisor.d/*.ini' >> /etc/supervisord.conf && rm -rf /var/cache/apk/*
############
# 2.2 安装 Nginx, etc/nginx/http.d 替换为 etc/nginx/http.d .config/nginx.http.d
RUN apk add --update --no-cache nginx && mkdir -p /run/nginx/ && mkdir -p /.config/nginx.http.d && sed -i 's/etc\/nginx\/http.d/.config\/nginx.http.d/' /etc/nginx/nginx.conf && sed -i 's/user nginx/user root/g' /etc/nginx/nginx.conf && rm -rf /var/cache/apk/*
############
# 2.3 安装语言运行库,jdk
RUN apk add --update --no-cache openjdk11 && mkdir -p /root/.m2 && echo 'https://developer.aliyun.com/mvn/guide' > /root/.m2/mirror.txt && echo 'https://mirrors.cloud.tencent.com/help/maven.html' > /root/.m2/mirror.txt && rm -rf /var/cache/apk/*
########################################################################################################################
############
# MAINTAINER apnode.win
LABEL maintainer="admin@apnode.win"
LABEL version="1.2024.0723"
ENTRYPOINT ["/sbin/tini" , "--"]
WORKDIR /code
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf","--pidfile","/run/supervisord.pid"]
############
############
# 复制需要的文件
############
ADD .adminer.tar.gz /root/
ADD .ovs.tar.gz /root/
ADD supervisor.tar /root/
ADD setup-php83.sh /root/
ADD setup-nodejs.sh /root/
ADD settings.xml /root/.m2/
########################################################################################################################
# FROM apnode:0723
########################################################################################################################
# 以下为apsdk内容
# OK: 679 MiB in 307 packages
# 3.2 安装语言运行库,nodejs,配置镜像
RUN apk add --update --no-cache nodejs npm libc6-compat && npm config set registry https://registry.npmmirror.com && rm -rf /var/cache/apk/*
############
# 3.3 安装语言库 php83 ,
RUN apk add --update --no-cache composer php83 php83-bcmath php83-bz2 php83-cgi php83-common php83-ctype php83-curl php83-enchant php83-exif php83-ffi php83-fileinfo php83-fpm php83-gd php83-gettext php83-gmp php83-iconv php83-imap php83-intl php83-ldap php83-litespeed php83-mbstring php83-mysqli php83-mysqlnd php83-odbc php83-opcache php83-openssl php83-pcntl php83-pdo php83-pdo_dblib php83-pdo_mysql php83-pdo_odbc php83-pdo_pgsql php83-pdo_sqlite php83-pear php83-pecl-amqp php83-pecl-apcu php83-pecl-ast php83-pecl-brotli php83-pecl-couchbase php83-pecl-decimal php83-pecl-ds php83-pecl-event php83-pecl-grpc php83-pecl-igbinary php83-pecl-imagick php83-pecl-imagick-dev php83-pecl-luasandbox php83-pecl-lzf php83-pecl-mailparse php83-pecl-maxminddb php83-pecl-mcrypt php83-pecl-memcache php83-pecl-memcached php83-pecl-mongodb php83-pecl-msgpack php83-pecl-opentelemetry php83-pecl-pcov php83-pecl-protobuf php83-pecl-psr php83-pecl-rdkafka php83-pecl-redis php83-pecl-smbclient php83-pecl-ssh2 php83-pecl-swoole php83-pecl-swoole-dev php83-pecl-timezonedb php83-pecl-uploadprogress php83-pecl-uploadprogress-doc php83-pecl-uuid php83-pecl-vips php83-pecl-xdebug php83-pecl-xhprof php83-pecl-xhprof-assets php83-pecl-xlswriter php83-pecl-yaml php83-pecl-zstd php83-pgsql php83-phar php83-phpdbg php83-posix php83-pspell php83-session php83-shmop php83-simplexml php83-snmp php83-soap php83-sockets php83-sodium php83-spx php83-sqlite3 php83-sysvmsg php83-sysvsem php83-sysvshm php83-tidy php83-tokenizer php83-xml php83-xmlreader php83-xmlwriter php83-xsl php83-zip && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && rm -rf /var/cache/apk/*
########################################################################################################################
########################################################################################################################
#__________________________________________________________________________________________________________________________________________________________________________
#__________________________________________________________________________________________________________________________________________________________________________
########################################################################################################################
########################################################################################################################
# 以下为历史记录便签
########################################################################################################################
########################################################################################################################
# 配置镜像, composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && rm -rf /var/cache/apk/*
# 去掉 composer
# apk add composer php82 php82-apache2 php82-bcmath php82-bz2 php82-calendar php82-cgi php82-common php82-ctype php82-curl php82-dba php82-dbg php82-dev php82-doc php82-dom php82-embed php82-enchant php82-exif php82-ffi php82-fileinfo php82-fpm php82-ftp php82-gd php82-gettext php82-gmp php82-iconv php82-imap php82-intl php82-ldap php82-litespeed php82-mbstring php82-mysqli php82-mysqlnd php82-odbc php82-opcache php82-openssl php82-pcntl php82-pdo php82-pdo_dblib php82-pdo_mysql php82-pdo_odbc php82-pdo_pgsql php82-pdo_sqlite php82-pear php82-pgsql php82-phar php82-phpdbg php82-posix php82-pspell php82-session php82-shmop php82-simplexml php82-snmp php82-soap php82-sockets php82-sodium php82-sqlite3 php82-sysvmsg php82-sysvsem php82-sysvshm php82-tidy php82-tokenizer php82-xml php82-xmlreader php82-xmlwriter php82-xsl php82-zip php82-pecl-redis php82-pecl-swoole php82-pecl-uuid php82-pecl-yaml php82-pecl-imagick php82-pecl-igbinary php82-pecl-decimal
# RUN apk add --update --no-cache php82 php82-apache2 php82-bcmath php82-bz2 php82-calendar php82-cgi php82-common php82-ctype php82-curl php82-dba php82-dbg php82-dev php82-doc php82-dom php82-embed php82-enchant php82-exif php82-ffi php82-fileinfo php82-fpm php82-ftp php82-gd php82-gettext php82-gmp php82-iconv php82-imap php82-intl php82-ldap php82-litespeed php82-mbstring php82-mysqli php82-mysqlnd php82-odbc php82-opcache php82-openssl php82-pcntl php82-pdo php82-pdo_dblib php82-pdo_mysql php82-pdo_odbc php82-pdo_pgsql php82-pdo_sqlite php82-pear php82-pgsql php82-phar php82-phpdbg php82-posix php82-pspell php82-session php82-shmop php82-simplexml php82-snmp php82-soap php82-sockets php82-sodium php82-sqlite3 php82-sysvmsg php82-sysvsem php82-sysvshm php82-tidy php82-tokenizer php82-xml php82-xmlreader php82-xmlwriter php82-xsl php82-zip php82-pecl-redis php82-pecl-swoole php82-pecl-uuid php82-pecl-yaml php82-pecl-imagick php82-pecl-igbinary php82-pecl-decimal && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && rm -rf /var/cache/apk/*
# mysql-client
############
# FROM apnode/apnode:latest
############
# 3.4 安装 openssl 复制
# RUN apk add --update --no-cache openssl
# ADD .ovs.tar.gz /.config/
# ADD adminer.zip /.config/
# CMD ["sh","/.config/.ovs/ovs.sh"]
############
# rm .ovs.tar.gz && tar cvzf .ovs.tar.gz .ovs/
# docker stop ovs && docker rm ovs && docker rmi apnode/ovs && docker build -t apnode/ovs -f ./Dockerfile.0506 .
#
# docker run -it -d --name=ovs -v /app:/app -p 0.0.0.0:12080:12080 apnode/ovs && docker logs -n 10 ovs
# docker inspect ovs | grep Dir
############
# CMD ["supervisord" "-c" "/etc/supervisord.conf"]
############
# ed, openvscode ,
# https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v1.88.0/openvscode-server-v1.88.0-linux-x64.tar.gz
############
# 2. 整合 中文字体,编译工具,图片库
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates gcc g++ make cmake automake autoconf libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
# FROM php:8.0-alpine
# 设置字符集
# ENV LANG=C.UTF-8
# ENV LANG en_US.UTF-8
# MAINTAINER apnode.win
############
############
# /bin/sh -c { echo '#!/bin/sh'; echo 'set -e'; echo; echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; } > /usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home
# ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
# ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
# ENV JAVA_VERSION=8u212
# ENV JAVA_ALPINE_VERSION=8.212.04-r0
# /bin/sh -c set -x && apk add --no-cache openjdk8="$JAVA_ALPINE_VERSION" && [ "$JAVA_HOME" = "$(docker-java-home)" ]
###########
# ENV LANG=en_US.UTF-8
# /bin/sh -c sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# /bin/sh -c apk add --update --no-cache ttf-dejavu fontconfig tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache supervisor && mkdir -p /app/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true/' /etc/supervisord.conf && echo 'files = /app/supervisor.d/*.ini' >> /etc/supervisord.conf && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache nginx mysql-client && mkdir -p /run/nginx/ && mkdir -p /app/nginx.d && sed -i 's/etc\/nginx\/conf.d/app\/nginx.d/' /etc/nginx/nginx.conf && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache util-linux git nodejs npm && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache composer php82-curl php82-iconv php82-mbstring php82-openssl php82-zip php82-phar php82-pdo_mysql php82-mysqlnd php82-intl php82-pecl-redis php82-sqlite3 php82-pecl-swoole php82-tokenizer php82-sockets php82-sqlite3 php82-pecl-igbinary php82-pecl-msgpack php82-pecl-mcrypt php82-pecl-imagick php82-pecl-uuid php82-pdo_pgsql php82-sodium && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# /bin/sh -c apk add --update --no-cache openjdk8-jre nodejs npm && npm config set registry https://registry.npmmirror.com
# /bin/sh -c apk add --update --no-cache supervisor nginx && mkdir -p /etc/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true\n;nodaemon=false/g' /etc/supervisord.conf
# /bin/sh -c apk add --update --no-cache tzdata ttf-dejavu fontconfig curl ca-certificates git nano vim tini util-linux-misc icu-data-full alpine-conf && /sbin/setup-timezone -z Asia/Shanghai
# /bin/sh -c sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
############
# 设置镜像
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 设置时区
# RUN apk --update --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 整合,设置镜像时区
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --update --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
############
# 安装 中文字体 CURL
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates
# 安装 图片库
# RUN apk --update --no-cache add libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
# 安装 编译工具
# RUN apk --update --no-cache add gcc g++ make cmake automake autoconf
# 整合 中文字体,编译工具,图片库
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates gcc g++ make cmake automake autoconf libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
############
# 安装 PHP-GD,MySQL, pgsql,sqlite
#RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ --with-gd
# RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
# 安装 PHP-Redis
# RUN docker-php-source extract && pecl install redis && echo extension=redis.so >/usr/local/etc/php/conf.d/pecl-redis.ini && docker-php-source delete
# RUN docker-php-source extract && pecl install redis && docker-php-ext-enable redis && docker-php-source delete
# 安装客户端
# RUN apk add --update --no-cache mysql-client
############
# CMD ["/bin/sh"]
############
# apnode/apnode:latest
# 测试 docker run -it --restart=unless-stopped --name=3.19 --net=host -v $(pwd):/app alpine:3.19 sh
# 查看 docker container stats --no-stream
# docker system df -v
############
#编译模板
# docker login
# docker build -t apnode -f ./Dockerfile.apnode .
# docker tag apnode apnode/apnode
# docker push apnode/apnode
############
#编译模板 jdk8
# docker login
# docker build -t apnode/jdk8 -f ./Dockerfile.apnode.jdk8 .
# docker push apnode/jdk8
############
#编译模板 base
# docker login
# docker build -t apnode:jdk8 -f ./Dockerfile.apnode.jdk8 .
# docker tag apnode:jdk8 apnode/jdk8
# docker push apnode/jdk8
############
# FROM alpine:3.19
############
# 1. 设置中国时区镜像, 中文字库,nano,vim,tini,curl
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --update --no-cache add alpine-conf ca-certificates curl fontconfig git htop icu-data-full inetutils-telnet nano p7zip tini ttf-dejavu tzdata unzip util-linux util-linux-misc vim zip && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && fc-cache --force && rm -rf /var/cache/apk/*
############
# apnode:last 满工具
# apnode:base 常用工具 无语言
# apnode:php8 常用工具 单语言
# apnode:jdk8 常用工具 单语言
# apnode:jdk13 常用工具 单语言
############ openssh-client-common openssh-keygen
# breaks: dropbear-ssh util-linux git htop zip unzip p7zip
# 2. 安装常用工具 git ,nginx ,进程守护 netcat-openbsd dropbear-scp dropbear-ssh dropbear-dbclient dropbear-convert inetutils-telnet
# git htop zip unzip p7zip netcat-openbsd dropbear-scp dropbear-ssh dropbear-dbclient dropbear-convert inetutils-telnet
# apk fetch --recursive --simulate supervisor supervisor-openrc
# RUN apk add --update --no-cache openssh-client-default openssh-client-common openssh-keygen && rm -rf /var/cache/apk/*
############
# 2.1 安装 supervisor , 需要 python3
# RUN apk add --update --no-cache supervisor py3-pip && mkdir -p /code && mkdir -p /app && mkdir -p /.docker/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true/' /etc/supervisord.conf && echo 'files = /.docker/supervisor.d/*.ini' >> /etc/supervisord.conf && rm -rf /var/cache/apk/*
############
# 以上为BASE内容
############
# MAINTAINER apnode.win
# WORKDIR /code
# ENTRYPOINT ["/sbin/tini" , "--"]
# CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
############
# 3.1 安装 Nginx
# include /etc/nginx/http.d/*.conf; 替换为 include /.docker/nginx/http.d/*.conf;
# RUN apk add --update --no-cache nginx && mkdir -p /.docker/nginx.conf.d/ && mkdir -p /.docker/nginx.http.d/ && cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.sed.backup && sed -i 's/etc\/nginx\/conf.d/.docker\/nginx.conf.d/' /etc/nginx/nginx.conf && sed -i 's/etc\/nginx\/http.d/.docker\/nginx.http.d/' /etc/nginx/nginx.conf && rm -rf /var/cache/apk/*
# 3.2 安装语言运行库,java8,nodejs
# RUN apk add --update --no-cache openjdk8 maven && rm -rf /var/cache/apk/*
# 3.3 安装语言运行库,nodejs,
# RUN apk add --update --no-cache nodejs npm && npm config set registry https://registry.npmmirror.com && rm -rf /var/cache/apk/*
# 3.4 安装语言库 php8
# apk fetch --recursive --simulate php-openssl
# RUN apk add --update --no-cache composer php83-curl php83-fpm php83-gd php83-iconv php83-intl php83-mbstring php83-mysqli php83-mysqlnd php83-openssl php83-pdo php83-pdo_mysql php83-pdo_pgsql php83-pdo_sqlite php83-pecl-igbinary php83-pecl-imagick php83-pecl-memcached php83-pecl-msgpack php83-pecl-redis php83-pecl-swoole php83-pgsql php83-phar php83-sockets php83-sodium php83-sqlite3 php83-tokenizer php83-zip && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && rm -rf /var/cache/apk/*
# 3.4 安装数据库客户端mysql-client,
# 3.5 安装 python
# pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# pip config set global.trusted-host mirrors.aliyun.com
# RUN apk add --update --no-cache supervisor py3-pip && mkdir -p /code && mkdir -p /app && mkdir -p /.docker/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true/' /etc/supervisord.conf && echo 'files = /.docker/supervisor.d/*.ini' >> /etc/supervisord.conf && rm -rf /var/cache/apk/*
############
############
# 2. 整合 中文字体,编译工具,图片库
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates gcc g++ make cmake automake autoconf libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
# FROM php:8.0-alpine
#设置字符集
# ENV LANG=C.UTF-8
# ENV LANG en_US.UTF-8
# MAINTAINER apnode.win
############
############
# /bin/sh -c { echo '#!/bin/sh'; echo 'set -e'; echo; echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; } > /usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home
# ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
# ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
# ENV JAVA_VERSION=8u212
# ENV JAVA_ALPINE_VERSION=8.212.04-r0
# /bin/sh -c set -x && apk add --no-cache openjdk8="$JAVA_ALPINE_VERSION" && [ "$JAVA_HOME" = "$(docker-java-home)" ]
###########
# ENV LANG=en_US.UTF-8
# /bin/sh -c sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# /bin/sh -c apk add --update --no-cache ttf-dejavu fontconfig tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache supervisor && mkdir -p /app/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true/' /etc/supervisord.conf && echo 'files = /app/supervisor.d/*.ini' >> /etc/supervisord.conf && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache nginx mysql-client && mkdir -p /run/nginx/ && mkdir -p /app/nginx.d && sed -i 's/etc\/nginx\/conf.d/app\/nginx.d/' /etc/nginx/nginx.conf && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache util-linux git nodejs npm && rm -rf /var/cache/apk/*
# /bin/sh -c apk add --update --no-cache composer php8-curl php8-iconv php8-mbstring php8-openssl php8-zip php8-phar php8-pdo_mysql php8-mysqlnd php8-intl php8-pecl-redis php8-sqlite3 php8-pecl-swoole php8-tokenizer php8-sockets php8-sqlite3 php8-pecl-igbinary php8-pecl-msgpack php8-pecl-mcrypt php8-pecl-imagick php8-pecl-uuid php8-pdo_pgsql php8-sodium && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# /bin/sh -c apk add --update --no-cache openjdk8-jre nodejs npm && npm config set registry https://registry.npmmirror.com
# /bin/sh -c apk add --update --no-cache supervisor nginx && mkdir -p /etc/supervisor.d && sed -i 's/;nodaemon=false/nodaemon=true\n;nodaemon=false/g' /etc/supervisord.conf
# /bin/sh -c apk add --update --no-cache tzdata ttf-dejavu fontconfig curl ca-certificates git nano vim tini util-linux-misc icu-data-full alpine-conf && /sbin/setup-timezone -z Asia/Shanghai
# /bin/sh -c sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
############
# 设置镜像
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 设置时区
# RUN apk --update --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 整合,设置镜像时区
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --update --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
############
# 安装 中文字体 CURL
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates
# 安装 图片库
# RUN apk --update --no-cache add libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
# 安装 编译工具
# RUN apk --update --no-cache add gcc g++ make cmake automake autoconf
# 整合 中文字体,编译工具,图片库
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates gcc g++ make cmake automake autoconf libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
############
# 安装 PHP-GD,MySQL, pgsql,sqlite
#RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ --with-gd
# RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
# 安装 PHP-Redis
# RUN docker-php-source extract && pecl install redis && echo extension=redis.so >/usr/local/etc/php/conf.d/pecl-redis.ini && docker-php-source delete
# RUN docker-php-source extract && pecl install redis && docker-php-ext-enable redis && docker-php-source delete
# 安装客户端
# RUN apk add --update --no-cache mysql-client
############
# CMD ["/bin/sh"]
# FROM php:8.0-alpine
#设置字符集
# ENV LANG en_US.UTF-8
############
# 设置镜像
# RUN sed -i '3s/#//' /etc/apk/repositories && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 设置时区
# RUN apk --update --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 整合,设置镜像时区
############
# 安装 中文字体 CURL
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates
# 安装 图片库
# RUN apk --update --no-cache add libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
# 安装 编译工具
# RUN apk --update --no-cache add gcc g++ make cmake automake autoconf
# 整合 中文字体,编译工具,图片库
# RUN apk --update --no-cache add ttf-dejavu fontconfig curl ca-certificates gcc g++ make cmake automake autoconf libpng libpng-dev libwebp libwebp-dev freetype freetype-dev libjpeg libjpeg-turbo libzip libzip-dev libjpeg-turbo-dev zlib sqlite sqlite-dev postgresql-dev icu-data-full
############
# 安装 PHP-GD,MySQL, pgsql,sqlite
#RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ --with-gd
# RUN docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2 && docker-php-ext-install pcntl zip gd mysqli pdo pdo_mysql pdo_sqlite pdo_pgsql
# 安装 PHP-Redis
# RUN docker-php-source extract && pecl install redis && echo extension=redis.so >/usr/local/etc/php/conf.d/pecl-redis.ini && docker-php-source delete
# RUN docker-php-source extract && pecl install redis && docker-php-ext-enable redis && docker-php-source delete
# 安装客户端
# RUN apk add --update --no-cache mysql-client
############
# apk fetch --recursive --simulate php-openssl
# RUN apk add --update --no-cache composer php82-curl php82-iconv php82-mbstring php82-openssl php82-zip php82-phar php82-pdo_mysql php82-mysqlnd php82-intl php82-pecl-redis php82-sqlite3 php82-pecl-swoole php82-tokenizer php82-sockets php82-sqlite3 php82-pecl-igbinary php82-pecl-msgpack php82-pecl-mcrypt php82-pecl-imagick php82-pecl-uuid php82-pdo_pgsql php82-sodium && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && rm -rf /var/cache/apk/*
JS-小技巧
快速创建数组,
new Array(10).fill('0').map( (item,index)=>{ console.log(index,item); return item; } )
动态属性,
const dynamic = 'flavour';
var item = { name: '前端小智', [dynamic]: '巧克力'}
console.log(item); // { name: '前端小智', flavour: '巧克力' }
空值合并??
const foo = null ?? 'Hello';console.log(foo); // 'Hello'
const bar = 'Not null' ?? 'Hello';console.log(bar); // 'Not null'
const baz = 0 ?? 'Hello';console.log(baz); // 0
//=======================
const a = 1;
const b = 2;
a &&= b;
console.log(a); // 2
// 上面等价于
a && (a = b);
// 或者
if (a) {a = b}
//=======================
const a = null;
const b = 3;
a ||= b;
console.log(a); // 3
// 上面等价于
a || (a = b);
//=======================
const a = null;
const b = 3;
a ??= b;
console.log(a); // 3
// 上面等价于
if (a === null || a === undefined) {
a = b;
}
======
参考
https://segmentfault.com/a/1190000040704570