update
This commit is contained in:
parent
17fca60282
commit
8e29d15e6d
@ -1,5 +1,5 @@
|
|||||||
ARG ARCH
|
ARG ARCH
|
||||||
FROM harbor.colben.cn/general/photon$ARCH
|
FROM harbor.colben.cn/general/photon$ARCH:5
|
||||||
MAINTAINER Colben colbenlee@gmail.com
|
MAINTAINER Colben colbenlee@gmail.com
|
||||||
ADD --chown=root:root /ADD/ccmd /opt/
|
ADD --chown=root:root /ADD/ccmd /opt/
|
||||||
ADD --chown=root:root /ADD/gitea /usr/bin/gitea
|
ADD --chown=root:root /ADD/gitea /usr/bin/gitea
|
||||||
|
@ -33,9 +33,8 @@ gpgcheck=0\n\
|
|||||||
&& ln -s /usr/bin/mysqldump /usr/bin/greatsqldump \
|
&& ln -s /usr/bin/mysqldump /usr/bin/greatsqldump \
|
||||||
&& ln -s /usr/bin/mysqladmin /usr/bin/greatsqladmin \
|
&& ln -s /usr/bin/mysqladmin /usr/bin/greatsqladmin \
|
||||||
&& rm -rf /usr/sbin/mysqld-debug \
|
&& rm -rf /usr/sbin/mysqld-debug \
|
||||||
/var/cache/yum \
|
/var/cache/dnf \
|
||||||
/var/lib/yum \
|
/var/lib/dnf \
|
||||||
/var/lib/rpm \
|
|
||||||
/var/log/* \
|
/var/log/* \
|
||||||
/etc/my.cnf.d \
|
/etc/my.cnf.d \
|
||||||
$BUNDLE_FILE \
|
$BUNDLE_FILE \
|
||||||
|
@ -15,6 +15,6 @@ gpgcheck=0\n\
|
|||||||
&& mv /etc/mongod.conf /etc/mongod.conf.origin \
|
&& mv /etc/mongod.conf /etc/mongod.conf.origin \
|
||||||
&& mv /var/log/mongodb /var/log/mongo \
|
&& mv /var/log/mongodb /var/log/mongo \
|
||||||
&& rm -f /var/log/mongo/mongod.log \
|
&& rm -f /var/log/mongo/mongod.log \
|
||||||
&& rm -rf /var/cache/dnf
|
&& rm -rf /var/cache/dnf /var/lib/dnf
|
||||||
CMD ["/opt/ccmd"]
|
CMD ["/opt/ccmd"]
|
||||||
|
|
||||||
|
@ -14,9 +14,8 @@ gpgcheck=0\n\
|
|||||||
&& dnf -y module disable mysql \
|
&& dnf -y module disable mysql \
|
||||||
&& dnf install mysql-community-server -y \
|
&& dnf install mysql-community-server -y \
|
||||||
&& rm -rf /usr/sbin/mysqld-debug \
|
&& rm -rf /usr/sbin/mysqld-debug \
|
||||||
/var/cache/yum \
|
/var/cache/dnf \
|
||||||
/var/lib/yum \
|
/var/lib/dnf \
|
||||||
/var/lib/rpm \
|
|
||||||
/var/log/* \
|
/var/log/* \
|
||||||
/etc/my.cnf.d \
|
/etc/my.cnf.d \
|
||||||
&& mkdir -p /var/log/mysql \
|
&& mkdir -p /var/log/mysql \
|
||||||
|
76
pgsql/ADD/ccmd
Executable file
76
pgsql/ADD/ccmd
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Mount dir #
|
||||||
|
# - /var/lib/pgsql #
|
||||||
|
# - /var/log/pgsql #
|
||||||
|
# - /etc/pgsql/conf.d #
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
trap Quit EXIT
|
||||||
|
|
||||||
|
PIDS=
|
||||||
|
GOT_SIGTERM=
|
||||||
|
LOG_DIR=/var/log/pgsql
|
||||||
|
DATA_DIR=/var/lib/pgsql
|
||||||
|
VERSION=$VERSION
|
||||||
|
|
||||||
|
function Print {
|
||||||
|
local file=/dev/null
|
||||||
|
[ '-f' = "$1" ] && file=$2 && shift && shift
|
||||||
|
date +"[%F %T] $*" | tee -a $file
|
||||||
|
}
|
||||||
|
|
||||||
|
function Quit {
|
||||||
|
Print killing pgsql ...
|
||||||
|
su - postgres -c "pg_ctl stop" || true
|
||||||
|
while :; do
|
||||||
|
pkill -x postmaster && Print killing postmaster ... || break
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
Print Container stopped.
|
||||||
|
test -n "$GOT_SIGTERM"
|
||||||
|
}
|
||||||
|
|
||||||
|
function Init {
|
||||||
|
chown -R postgres:postgres $LOG_DIR $DATA_DIR
|
||||||
|
if [ -z "$(ls $DATA_DIR)" ]; then
|
||||||
|
Print Initing pgsql db files ...
|
||||||
|
su - postgres -c "initdb --pgdata=$DATA_DIR --locale=en_US.UTF-8"
|
||||||
|
else
|
||||||
|
Print Checking pgsql db dir ...
|
||||||
|
su - postgres -c "postgresql-$VERSION-check-db-dir $DATA_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function StartProc {
|
||||||
|
Print Starting pgsql ...
|
||||||
|
local sock="/tmp/.s.PGSQL.$(su - postgres -c 'postmaster -C port')"
|
||||||
|
rm -f $sock
|
||||||
|
su - postgres -c postmaster &
|
||||||
|
PIDS="$PIDS $!"
|
||||||
|
while sleep 1; do
|
||||||
|
[ -e $sock ] && break || echo -n .
|
||||||
|
[ ! -e /proc/$! ] && echo && Print unexpected error! && exit
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
Print PGSQL is ready for connections.
|
||||||
|
}
|
||||||
|
|
||||||
|
function Main {
|
||||||
|
local pid=
|
||||||
|
Init
|
||||||
|
StartProc
|
||||||
|
trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM
|
||||||
|
while [ -z "$GOT_SIGTERM" ] && sleep 2; do
|
||||||
|
for pid in $PIDS; do
|
||||||
|
[ ! -e /proc/$pid ] && Print Unexpected error! && exit
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start here
|
||||||
|
Main
|
||||||
|
|
21
pgsql/Demo/SingleNode/README.md
Normal file
21
pgsql/Demo/SingleNode/README.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# 部署 PostgreSQL 单节点
|
||||||
|
|
||||||
|
- 按实际环境修改
|
||||||
|
- docker-compose.yml
|
||||||
|
- pgsql/conf.d/\*.cnf
|
||||||
|
|
||||||
|
- 创建目录
|
||||||
|
```
|
||||||
|
grep '\<source:' docker-compose.yml | cut -d: -f2 | xargs mkdir -p
|
||||||
|
```
|
||||||
|
|
||||||
|
- 启动
|
||||||
|
```
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
- 查看日志,直至出现 "PGSQL is ready for connections."
|
||||||
|
```
|
||||||
|
docker-compose logs pgsql
|
||||||
|
```
|
||||||
|
|
23
pgsql/Demo/SingleNode/docker-compose.yml
Normal file
23
pgsql/Demo/SingleNode/docker-compose.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
pgsql:
|
||||||
|
image: harbor.colben.cn/general/pgsql:15
|
||||||
|
container_name: pgsql
|
||||||
|
restart: "on-failure"
|
||||||
|
stop_grace_period: 32s
|
||||||
|
networks:
|
||||||
|
pgsql:
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: ./pgsql/db
|
||||||
|
target: /var/lib/pgsql/
|
||||||
|
- type: bind
|
||||||
|
source: ./pgsql/conf.d
|
||||||
|
target: /etc/pgsql/conf.d
|
||||||
|
- type: bind
|
||||||
|
source: ./pgsql/log
|
||||||
|
target: /var/log/pgsql
|
||||||
|
|
19
pgsql/Demo/SingleNode/pgsql/my.cnf
Normal file
19
pgsql/Demo/SingleNode/pgsql/my.cnf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[mysqld]
|
||||||
|
mysqlx = OFF
|
||||||
|
skip-name-resolve = 1
|
||||||
|
max-user-connections = 600
|
||||||
|
|
||||||
|
## this should be less than 80% of total memory
|
||||||
|
innodb-buffer-pool-size = xxxxG
|
||||||
|
|
||||||
|
## this should be half of "innodb-buffer-pool-size"
|
||||||
|
innodb-buffer-pool-instances = xxxx
|
||||||
|
|
||||||
|
# binlog
|
||||||
|
server-id = 1
|
||||||
|
log-bin = /var/lib/mysql-bin/master
|
||||||
|
binlog-format = ROW
|
||||||
|
binlog-expire-logs-seconds = 172800
|
||||||
|
gtid-mode = ON
|
||||||
|
enforce-gtid-consistency = TRUE
|
||||||
|
|
58
pgsql/Dockerfile
Normal file
58
pgsql/Dockerfile
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
ARG ARCH
|
||||||
|
FROM harbor.colben.cn/general/rocky$ARCH:8
|
||||||
|
MAINTAINER Colben colbenlee@gmail.com
|
||||||
|
ARG ARCH
|
||||||
|
ARG VERSION
|
||||||
|
ADD --chown=root:root /ADD/ /opt/
|
||||||
|
RUN echo -e "[pgdg-common]\n\
|
||||||
|
name=PostgreSQL common RPMs for RHEL / Rocky / AlmaLinux \$releasever - \$basearch\n\
|
||||||
|
baseurl=https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/redhat/rhel-\$releasever-\$basearch\n\
|
||||||
|
enabled=1\n\
|
||||||
|
gpgcheck=0\n\
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL\n\
|
||||||
|
repo_gpgcheck = 0\n\
|
||||||
|
\n\
|
||||||
|
[pgdg$VERSION]\n\
|
||||||
|
name=PostgreSQL $VERSION for RHEL / Rocky / AlmaLinux \$releasever - \$basearch\n\
|
||||||
|
baseurl=https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/$VERSION/redhat/rhel-\$releasever-\$basearch\n\
|
||||||
|
enabled=1\n\
|
||||||
|
gpgcheck=0\n\
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL\n\
|
||||||
|
repo_gpgcheck = 0\n\
|
||||||
|
" > /etc/yum.repos.d/pgsql-$VERSION.repo \
|
||||||
|
&& dnf makecache \
|
||||||
|
&& dnf -y module disable postgresql \
|
||||||
|
&& dnf install -y postgresql$VERSION-server \
|
||||||
|
&& rm -rf /var/lib/pgsql/* \
|
||||||
|
/var/cache/dnf \
|
||||||
|
/var/lib/dnf \
|
||||||
|
/var/log/* \
|
||||||
|
&& rm -f /var/lib/pgsql/.bash* \
|
||||||
|
&& mkdir -p /var/log/pgsql /etc/pgsql/conf.d \
|
||||||
|
&& chown -R postgres:postgres /var/log/pgsql \
|
||||||
|
&& echo -e "# DO NOT EDIT THIS FILE!\n\
|
||||||
|
\n\
|
||||||
|
include_if_exists = '/var/lib/pgsql/postgresql.conf'\n\
|
||||||
|
include_dir = 'conf.d'\n\
|
||||||
|
include = 'fixed-parameters.conf'\n\
|
||||||
|
" > /etc/pgsql/postgresql.conf \
|
||||||
|
&& echo -e "# DO NOT EDIT THIS FILE!\n\
|
||||||
|
\n\
|
||||||
|
data_directory = '/var/lib/pgsql'\n\
|
||||||
|
hba_file = '/var/lib/pgsql/pg_hba.conf'\n\
|
||||||
|
ident_file = '/var/lib/pgsql/pg_ident.conf'\n\
|
||||||
|
log_destination = 'stderr'\n\
|
||||||
|
logging_collector = on\n\
|
||||||
|
log_directory = '/var/log/pgsql'\n\
|
||||||
|
log_filename = 'server-%y%m%d.log'\n\
|
||||||
|
log_file_mode = 0644\n\
|
||||||
|
log_rotation_age = 1d\n\
|
||||||
|
log_rotation_size = 128MB\n\
|
||||||
|
log_truncate_on_rotation = on\n\
|
||||||
|
" > /etc/pgsql/fixed-parameters.conf \
|
||||||
|
&& echo -e "export PGDATA=/etc/pgsql\n\
|
||||||
|
export PATH=/usr/pgsql-$VERSION/bin:\$PATH\n\
|
||||||
|
" > /etc/profile.d/pgsql.sh
|
||||||
|
ENV VERSION=15
|
||||||
|
CMD ["/opt/ccmd"]
|
||||||
|
|
16
pgsql/README.md
Normal file
16
pgsql/README.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# 构建 postgresql 镜像
|
||||||
|
|
||||||
|
## 定制
|
||||||
|
- 安装 postgresql
|
||||||
|
- 固定一些常用配置
|
||||||
|
- 第一次启动 postgresql 时,会执行如下操作
|
||||||
|
- 初始化数据目录
|
||||||
|
|
||||||
|
## 外挂目录和文件
|
||||||
|
- /var/lib/pgsql/: pgsql 数据目录
|
||||||
|
- /etc/conf.d/: pgsql 配置文件目录,覆盖数据目录下的 postgresql.conf
|
||||||
|
- /var/log/pgsql: pgsql 日志目录
|
||||||
|
|
||||||
|
## 案例
|
||||||
|
- [Demo/SingleNode/](Demo/SingleNode/): 单节点
|
||||||
|
|
68
pgsql/pgsql.sh
Executable file
68
pgsql/pgsql.sh
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#=========================================
|
||||||
|
# Author : colben
|
||||||
|
#=========================================
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)"
|
||||||
|
ROOT_DIR="$(cd $(dirname $0) && pwd)"
|
||||||
|
VERSION=${1:?}
|
||||||
|
IMAGE="harbor.colben.cn/general/pgsql$ARCH:$VERSION"
|
||||||
|
|
||||||
|
if [ -t 0 ]; then
|
||||||
|
function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; }
|
||||||
|
function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; }
|
||||||
|
function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; }
|
||||||
|
else
|
||||||
|
function Print { echo -e "$(date +'[%F %T INFO]') $*"; }
|
||||||
|
function Warn { echo -e "$(date +'[%F %T WARN]') $*"; }
|
||||||
|
function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
function Quit {
|
||||||
|
local exitCode=$?
|
||||||
|
[ 0 -ne $exitCode ] && Error Failed to build or push image!
|
||||||
|
[ -z "${END:-}" ] && echo && Error Interrupted manually!
|
||||||
|
Print Succeeded to build and push image.
|
||||||
|
}
|
||||||
|
|
||||||
|
function YesOrNo {
|
||||||
|
Warn $*
|
||||||
|
local sw=
|
||||||
|
while :; do
|
||||||
|
read -p '(Yes/No/Quit) ' -n1 sw
|
||||||
|
[[ "$sw" =~ ^Y|y$ ]] && echo && return 0
|
||||||
|
[[ "$sw" =~ ^N|n$ ]] && echo && return 1
|
||||||
|
[[ "$sw" =~ ^Q|q$ ]] && echo && exit 0
|
||||||
|
[ -n "$sw" ] && echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function Update {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
function Build {
|
||||||
|
local yn
|
||||||
|
cd $ROOT_DIR
|
||||||
|
docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \
|
||||||
|
&& Warn Removing image $IMAGE ... \
|
||||||
|
&& docker rmi $IMAGE
|
||||||
|
Warn Building image: $IMAGE ...
|
||||||
|
docker build --force-rm --build-arg ARCH="$ARCH" --build-arg VERSION="$VERSION" -t $IMAGE -f Dockerfile .
|
||||||
|
YesOrNo Push image: $IMAGE? && docker push $IMAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
function Main {
|
||||||
|
trap Quit EXIT
|
||||||
|
Update
|
||||||
|
Build
|
||||||
|
END=1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start here
|
||||||
|
Main
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
FROM photon:4.0
|
FROM photon:5
|
||||||
MAINTAINER Colben colbenlee@gmail.com
|
MAINTAINER Colben colbenlee@gmail.com
|
||||||
ADD --chown=root:root /ADD/ /etc/
|
ADD --chown=root:root /ADD/ /etc/
|
||||||
RUN tdnf makecache \
|
RUN tdnf makecache \
|
||||||
|
@ -9,7 +9,7 @@ export LANG=en_US.UTF-8
|
|||||||
|
|
||||||
[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)"
|
[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)"
|
||||||
ROOT_DIR="$(cd $(dirname $0) && pwd)"
|
ROOT_DIR="$(cd $(dirname $0) && pwd)"
|
||||||
IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:latest"
|
IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:5"
|
||||||
|
|
||||||
if [ -t 0 ]; then
|
if [ -t 0 ]; then
|
||||||
function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; }
|
function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; }
|
||||||
|
@ -3,5 +3,5 @@ FROM harbor.colben.cn/general/rocky$ARCH:8
|
|||||||
MAINTAINER Colben colbenlee@gmail.com
|
MAINTAINER Colben colbenlee@gmail.com
|
||||||
RUN dnf makecache \
|
RUN dnf makecache \
|
||||||
&& dnf install gcc gcc-c++ make cmake python39-devel mysql-devel -y \
|
&& dnf install gcc gcc-c++ make cmake python39-devel mysql-devel -y \
|
||||||
&& rm -rf /var/cache/dnf
|
&& rm -rf /var/cache/dnf /var/lib/dnf
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ gpgcheck=0\n\
|
|||||||
&& dnf makecache \
|
&& dnf makecache \
|
||||||
&& dnf install -y ncurses iproute procps-ng glibc-langpack-en \
|
&& dnf install -y ncurses iproute procps-ng glibc-langpack-en \
|
||||||
&& echo 'alias ls="ls --color=auto"' > /etc/profile.d/docker.sh \
|
&& echo 'alias ls="ls --color=auto"' > /etc/profile.d/docker.sh \
|
||||||
&& rm -rf /var/cache/dnf \
|
&& rm -rf /var/cache/dnf /var/lib/dnf \
|
||||||
&& rm -rf /var/log/*
|
&& rm -rf /var/log/*
|
||||||
ENV PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] '
|
ENV PS1='\[\e[33;1;1m\][\[\e[0m\]\[\e[35;1m\]\u\[\e[0m\]\[\e[33;1;1m\]@\[\e[0m\]\[\e[31;1;1m\]docker\[\e[0m\]\[\e[32;1;1m\](\h)\[\e[0m\]\[\e[33;1;1m\]:\[\e[0m\]\[\e[32m\]\w\[\e[0m\]\[\e[33;1;1m\]]\[\e[0m\]\[\e[36m\]\$\[\e[0m\] '
|
||||||
ENV PS2='\[\e[36m\]>\[\e[0m\] '
|
ENV PS2='\[\e[36m\]>\[\e[0m\] '
|
||||||
|
Loading…
x
Reference in New Issue
Block a user