[feat:11]更换基础系统为Debian;切换为分支管理方式
This commit is contained in:
+11
-20
@@ -1,10 +1,14 @@
|
||||
# Ver: 1.0 by Endial Fang (endial@126.com)
|
||||
#
|
||||
# 指定原始系统镜像,常用镜像为 colovu/ubuntu:18.04、colovu/debian:10-buster、colovu/alpine:3.11、colovu/openjdk:8u252-jre
|
||||
FROM colovu/ubuntu:18.04
|
||||
# 指定原始系统镜像,常用镜像为 colovu/ubuntu:18.04、colovu/debian:10、colovu/alpine:3.12、colovu/openjdk:8u252-jre
|
||||
FROM colovu/debian:10
|
||||
|
||||
# ARG参数使用"--build-arg"指定,如 "--build-arg apt_source=tencent"
|
||||
# sources.list 可使用版本:default / tencent / ustc / aliyun / huawei
|
||||
ARG apt_source=default
|
||||
|
||||
# 外部指定应用版本信息,如 "--build-arg app_ver=6.0.0"
|
||||
ARG app_ver=10
|
||||
ARG app_ver=11
|
||||
|
||||
# 编译镜像时指定本地服务器地址,如 "--build-arg local_url=http://172.29.14.108/dist-files/"
|
||||
ARG local_url=""
|
||||
@@ -25,8 +29,7 @@ ENV APP_BASE_DIR=/usr/lib/${APP_NAME}/${APP_VERSION} \
|
||||
APP_CACHE_DIR=/var/cache/${APP_NAME} \
|
||||
APP_RUN_DIR=/var/run/${APP_NAME} \
|
||||
APP_LOG_DIR=/var/log/${APP_NAME} \
|
||||
APP_CERT_DIR=/srv/cert/${APP_NAME} \
|
||||
APP_WWW_DIR=/srv/www
|
||||
APP_CERT_DIR=/srv/cert/${APP_NAME}
|
||||
|
||||
# 设置应用需要的特定环境变量
|
||||
ENV \
|
||||
@@ -49,6 +52,9 @@ RUN set -eux; \
|
||||
# 设置程序使用静默安装,而非交互模式;类似tzdata等程序需要使用静默安装
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
\
|
||||
# 更改源为当次编译指定的源
|
||||
cp /etc/apt/sources.list.${apt_source} /etc/apt/sources.list; \
|
||||
\
|
||||
# 设置容器入口脚本的可执行权限
|
||||
chmod +x /usr/local/bin/entrypoint.sh; \
|
||||
\
|
||||
@@ -65,8 +71,6 @@ RUN set -eux; \
|
||||
pgdg-keyring \
|
||||
libnss-wrapper \
|
||||
xz-utils \
|
||||
locales \
|
||||
tzdata \
|
||||
"; \
|
||||
\
|
||||
\
|
||||
@@ -103,15 +107,6 @@ RUN set -eux; \
|
||||
\
|
||||
\
|
||||
\
|
||||
# 为中国区使用重新配置 TimeZone 信息。需要安装 tzdata 软件包
|
||||
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \
|
||||
dpkg-reconfigure -f noninteractive tzdata; \
|
||||
\
|
||||
# 安装 UTF-8 编码。需要安装 locales 软件包
|
||||
localedef -c -i en_US -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8; \
|
||||
echo 'en_GB.UTF-8 UTF-8\nen_US.UTF-8 UTF-8' >> /etc/locale.gen && locale-gen; \
|
||||
update-locale LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=POSIX && dpkg-reconfigure locales; \
|
||||
\
|
||||
# 检测是否存在对应版本的 overrides 脚本文件;如果存在,执行
|
||||
{ [ ! -e "/usr/local/overrides/overrides-${APP_VERSION}.sh" ] || /bin/bash "/usr/local/overrides/overrides-${APP_VERSION}.sh"; }; \
|
||||
\
|
||||
@@ -138,10 +133,6 @@ RUN set -eux; \
|
||||
# 验证安装的软件是否可以正常运行,常规情况下放置在命令行的最后
|
||||
gosu ${APP_USER} ${APP_EXEC} --version ;
|
||||
|
||||
ENV LANG=en_US.UTF-8 \
|
||||
LANGUAGE=en_US.UTF-8 \
|
||||
LC_ALL=en_US.UTF-8
|
||||
|
||||
VOLUME ["/srv/conf", "/srv/data", "/var/log", "/var/run"]
|
||||
|
||||
# 默认使用gosu切换为新建用户启动,必须保证端口在1024之上
|
||||
@@ -0,0 +1,58 @@
|
||||
version: '3.6'
|
||||
|
||||
# Docker-Compose 单容器使用参考 YAML 配置文件
|
||||
# 更多配置参数请参考镜像 README.md 文档中说明
|
||||
services:
|
||||
zookeeper:
|
||||
image: 'bitnami/zookeeper:3'
|
||||
ports:
|
||||
- '2181:2181'
|
||||
environment:
|
||||
- ALLOW_ANONYMOUS_LOGIN=yes
|
||||
kafka:
|
||||
image: 'bitnami/kafka:2'
|
||||
ports:
|
||||
- '9092'
|
||||
environment:
|
||||
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
|
||||
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||
volumes:
|
||||
- 'kafka2_data:/bitnami'
|
||||
depends_on:
|
||||
- zookeeper
|
||||
kafka2:
|
||||
image: 'bitnami/kafka:2'
|
||||
ports:
|
||||
- '9092'
|
||||
environment:
|
||||
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
|
||||
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||
volumes:
|
||||
- 'kafka_data:/bitnami'
|
||||
depends_on:
|
||||
- zookeeper
|
||||
kafka3:
|
||||
image: 'bitnami/kafka:2'
|
||||
ports:
|
||||
- '9092'
|
||||
environment:
|
||||
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
|
||||
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||
volumes:
|
||||
- 'kafka3_data:/bitnami'
|
||||
depends_on:
|
||||
- zookeeper
|
||||
|
||||
volumes:
|
||||
kafka_data:
|
||||
driver: local
|
||||
kafka2_data:
|
||||
driver: local
|
||||
kafka3_data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
back-tier:
|
||||
driver: bridge
|
||||
front-tier:
|
||||
driver: bridge
|
||||
@@ -0,0 +1,36 @@
|
||||
version: '3.6'
|
||||
|
||||
# Docker-Compose 单容器使用参考 YAML 配置文件
|
||||
# 更多配置参数请参考镜像 README.md 文档中说明
|
||||
services:
|
||||
postgres:
|
||||
# 10
|
||||
image: 'colovu/postgres:10'
|
||||
ports:
|
||||
- '5432:5432'
|
||||
container_name: postgres
|
||||
restart: always
|
||||
networks:
|
||||
- back-tier
|
||||
volumes:
|
||||
- $PWD/conf:/srv/conf
|
||||
- $PWD/log:/var/log
|
||||
- $PWD/datalog:/srv/datalog
|
||||
- $PWD/data:/srv/data
|
||||
environment:
|
||||
- PG_USERNAME=postgres
|
||||
- PG_PASSWORD=colovu
|
||||
- PG_DATABASE=postgres
|
||||
- ENV_DEBUG=yes
|
||||
|
||||
volumes:
|
||||
zookeeper_data:
|
||||
driver: local
|
||||
kafka_data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
back-tier:
|
||||
driver: bridge
|
||||
front-tier:
|
||||
driver: bridge
|
||||
@@ -14,28 +14,6 @@
|
||||
|
||||
# 函数列表
|
||||
|
||||
# 配置 libnss_wrapper 以使得 PostgreSQL 命令可以以任意用户身份执行
|
||||
# 全局变量:
|
||||
# PG_*
|
||||
postgresql_enable_nss_wrapper() {
|
||||
if ! getent passwd "$(id -u)" &> /dev/null && [ -e /usr/lib/libnss_wrapper.so ]; then
|
||||
LOG_D "Configuring libnss_wrapper..."
|
||||
export LD_PRELOAD='/usr/lib/libnss_wrapper.so'
|
||||
export NSS_WRAPPER_PASSWD="$(mktemp)"
|
||||
export NSS_WRAPPER_GROUP="$(mktemp)"
|
||||
echo "postgres:x:$(id -u):$(id -g):PostgreSQL:${PG_DATA_DIR}:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
||||
echo "postgres:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
||||
fi
|
||||
}
|
||||
|
||||
postgresql_disable_nss_wrapper() {
|
||||
# unset/cleanup "nss_wrapper" bits
|
||||
if [ "${LD_PRELOAD:-}" = '/usr/lib/libnss_wrapper.so' ]; then
|
||||
rm -f "$NSS_WRAPPER_PASSWD" "$NSS_WRAPPER_GROUP"
|
||||
unset LD_PRELOAD NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP
|
||||
fi
|
||||
}
|
||||
|
||||
# 加载应用使用的环境变量初始值,该函数在相关脚本中以 eval 方式调用
|
||||
# 全局变量:
|
||||
# ENV_* : 容器使用的全局变量
|
||||
@@ -133,6 +111,28 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
# 配置 libnss_wrapper 以使得 PostgreSQL 命令可以以任意用户身份执行
|
||||
# 全局变量:
|
||||
# PG_*
|
||||
postgresql_enable_nss_wrapper() {
|
||||
if ! getent passwd "$(id -u)" &> /dev/null && [ -e /usr/lib/libnss_wrapper.so ]; then
|
||||
LOG_D "Configuring libnss_wrapper..."
|
||||
export LD_PRELOAD='/usr/lib/libnss_wrapper.so'
|
||||
export NSS_WRAPPER_PASSWD="$(mktemp)"
|
||||
export NSS_WRAPPER_GROUP="$(mktemp)"
|
||||
echo "postgres:x:$(id -u):$(id -g):PostgreSQL:${PG_DATA_DIR}:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
||||
echo "postgres:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
||||
fi
|
||||
}
|
||||
|
||||
postgresql_disable_nss_wrapper() {
|
||||
# unset/cleanup "nss_wrapper" bits
|
||||
if [ "${LD_PRELOAD:-}" = '/usr/lib/libnss_wrapper.so' ]; then
|
||||
rm -f "$NSS_WRAPPER_PASSWD" "$NSS_WRAPPER_GROUP"
|
||||
unset LD_PRELOAD NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP
|
||||
fi
|
||||
}
|
||||
|
||||
# 将变量配置更新至配置文件
|
||||
# 参数:
|
||||
# $1 - 文件
|
||||
@@ -517,10 +517,12 @@ app_start_server_bg() {
|
||||
LOG_D "${APP_NAME} is ready for service..."
|
||||
}
|
||||
|
||||
# 停止 PostgreSQL 后台服务
|
||||
# 停止应用后台服务
|
||||
# 全局变量:
|
||||
# PG_PID_FILE
|
||||
app_stop_server() {
|
||||
is_app_server_running || return
|
||||
|
||||
LOG_I "Stopping ${APP_NAME}..."
|
||||
stop_service_using_pid "$PG_PID_FILE"
|
||||
}
|
||||
@@ -555,6 +557,7 @@ app_clean_tmp_file() {
|
||||
# APP_*
|
||||
# PG_*
|
||||
app_clean_from_restart() {
|
||||
LOG_D "Delete temp files when restart container"
|
||||
local -r -a files=(
|
||||
"$PG_DATA_DIR"/postmaster.pid
|
||||
"$PG_DATA_DIR"/standby.signal
|
||||
@@ -71,7 +71,6 @@ _main() {
|
||||
docker_ensure_dir_and_configs
|
||||
|
||||
# 以root用户运行时,会使用gosu重新以"APP_USER"用户运行当前脚本
|
||||
LOG_D "Check if run as root"
|
||||
if _is_run_as_root; then
|
||||
LOG_D "Change permissions when run as root"
|
||||
|
||||
Reference in New Issue
Block a user