Skip to content

Commit c9291c2

Browse files
committed
docker compose & docker swarm install ivorysql cluster & helm install ivorysql cluster & v4.6 docker
1 parent 997d89c commit c9291c2

28 files changed

+1150
-10
lines changed

4/bookworm/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ RUN mkdir /docker-entrypoint-initdb.d
2121

2222
# Set environment variables for IvorySQL
2323
ENV IVORY_MAJOR 4
24-
ENV IVORY_VERSION 4.5
24+
ENV IVORY_VERSION 4.6
2525
ARG USE_CHINA_MIRROR=false
2626

2727
# Use China mirror if specified
@@ -116,7 +116,7 @@ COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116116
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 4
119-
ENV IVORY_VERSION 4.5
119+
ENV IVORY_VERSION 4.6
120120
ARG USE_CHINA_MIRROR=false
121121
RUN mkdir /docker-entrypoint-initdb.d
122122

4/trixie/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ RUN mkdir /docker-entrypoint-initdb.d
2121

2222
# Set environment variables for IvorySQL
2323
ENV IVORY_MAJOR 4
24-
ENV IVORY_VERSION 4.5
24+
ENV IVORY_VERSION 4.6
2525
ARG USE_CHINA_MIRROR=false
2626

2727
# Use China mirror if specified
@@ -116,7 +116,7 @@ COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116116
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 4
119-
ENV IVORY_VERSION 4.5
119+
ENV IVORY_VERSION 4.6
120120
ARG USE_CHINA_MIRROR=false
121121
RUN mkdir /docker-entrypoint-initdb.d
122122

4/ubi8/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ RUN groupadd -g 1000 ivorysql; \
1919
RUN mkdir /docker-entrypoint-initdb.d
2020

2121
ENV IVORY_MAJOR 4
22-
ENV IVORY_VERSION 4.5
22+
ENV IVORY_VERSION 4.6
2323

2424
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo; \
2525
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
@@ -87,7 +87,7 @@ COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
8787
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
8888

8989
ENV IVORY_MAJOR 4
90-
ENV IVORY_VERSION 4.5
90+
ENV IVORY_VERSION 4.6
9191

9292
RUN mkdir /docker-entrypoint-initdb.d
9393

docker-cluster/Dockerfile

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
FROM redhat/ubi8:latest as builder
2+
3+
# explicitly set user/group IDs
4+
RUN groupadd -g 1000 ivorysql; \
5+
useradd -u 1000 -g ivorysql -d /var/local/ivorysql -s /bin/sh ivorysql; \
6+
mkdir -p /var/local/ivorysql; \
7+
mkdir -p /usr/src/ivorysql; \
8+
mkdir -p /var/lib/ivorysql; \
9+
chown -R ivorysql:ivorysql /var/local/ivorysql; \
10+
chown -R ivorysql:ivorysql /usr/src/ivorysql; \
11+
chown -R ivorysql:ivorysql /var/lib/ivorysql
12+
13+
RUN mkdir /docker-entrypoint-initdb.d
14+
# install ivorysql 4.6
15+
ENV IVORY_MAJOR 4
16+
ENV IVORY_VERSION 4.6
17+
18+
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo; \
19+
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
20+
21+
RUN mkdir -p /usr/src/ivorysql; \
22+
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm; \
23+
dnf install -y epel-release;\
24+
dnf install -y \
25+
make \
26+
readline-devel \
27+
zlib-devel \
28+
openssl-devel \
29+
flex \
30+
wget \
31+
dpkg; \
32+
dnf groupinstall -y "Development Tools";\
33+
dnf install -y \
34+
llvm-toolset llvm-devel lz4 lz4-devel lz4-libs clang-devel \
35+
krb5-devel libselinux-devel libxml2-devel cyrus-sasl-gssapi \
36+
libicu-devel e2fsprogs-devel selinux-policy systemd-devel \
37+
libxslt-devel openldap-devel openssl-devel pam-devel \
38+
libuuid-devel python3-devel readline-devel tcl-devel zlib-devel \
39+
perl perl-devel perl-ExtUtils-Embed;\
40+
dnf install -y --enablerepo=*ower*ools perl-IPC-Run perl-Time-HiRes perl-Test-Simple uuid-devel;\
41+
wget -O ivorysql.tar.gz "https://github.com/IvorySQL/IvorySQL/archive/refs/tags/IvorySQL_$IVORY_VERSION.tar.gz"; \
42+
tar \
43+
--extract \
44+
--file ivorysql.tar.gz \
45+
--directory /usr/src/ivorysql \
46+
--strip-components 1 \
47+
; \
48+
rm ivorysql.tar.gz; \
49+
cd /usr/src/ivorysql; \
50+
wget https://repo.almalinux.org/almalinux/8/PowerTools/$(arch)/os/Packages/bison-devel-3.0.4-10.el8.$(arch).rpm; \
51+
dnf install -y bison-devel-3.0.4-10.el8.$(arch).rpm; \
52+
wget https://repo.almalinux.org/almalinux/8/AppStream/$(arch)/os/Packages/bison-3.0.4-10.el8.$(arch).rpm; \
53+
dnf install -y bison-3.0.4-10.el8.$(arch).rpm; \
54+
./configure \
55+
--prefix=/var/local/ivorysql/ivorysql-$IVORY_MAJOR \
56+
--enable-cassert --enable-debug --enable-rpath --with-tcl \
57+
--with-python --with-gssapi --with-pam --with-ldap \
58+
--with-openssl --with-libedit-preferred --with-uuid=e2fs \
59+
--with-ossp-uuid --with-libxml --with-libxslt --with-perl \
60+
--with-icu \
61+
; \
62+
make && make install; \
63+
rm -rf \
64+
/usr/src/ivorysql \
65+
/usr/local/share/doc \
66+
/usr/local/share/man
67+
68+
FROM redhat/ubi8:latest
69+
70+
RUN useradd -u 1000 ivorysql
71+
72+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
73+
74+
ENV IVORY_MAJOR 4
75+
ENV IVORY_VERSION 4.6
76+
77+
RUN dnf install -y \
78+
lz4 lz4-devel lz4-libs krb5-devel libxslt-devel libicu-devel && dnf -y clean all
79+
80+
#install patroni 4.0.6
81+
env PATRONI_VER 4.0.6
82+
83+
RUN dnf -y install --nodocs \
84+
--setopt=skip_missing_names_on_install=False \
85+
python3-pip \
86+
python3-psutil \
87+
python3-psycopg2 \
88+
&& dnf -y clean all
89+
90+
RUN pip3 install --upgrade python-dateutil \
91+
&& pip3 install patroni[etcd]=="${PATRONI_VER}"
92+
93+
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
94+
ENV PATRONICONF /var/local/ivorysql/ivorysql-$IVORY_MAJOR/patroni
95+
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)
96+
RUN mkdir -p "$PGDATA" && chown -R ivorysql:ivorysql "$PGDATA" && chmod 750 "$PGDATA"
97+
RUN mkdir -p "$PATRONICONF" && chown -R ivorysql:ivorysql "$PATRONICONF" && chmod 1777 "$PATRONICONF"
98+
99+
COPY docker-entrypoint.sh /
100+
RUN chmod +x docker-entrypoint.sh
101+
102+
VOLUME $PGDATA $PATRONICONF
103+
104+
ENV PATH $PATH:/var/local/ivorysql/ivorysql-$IVORY_MAJOR/bin
105+
106+
EXPOSE 5432 5866 1521
107+
108+
USER ivorysql
109+
110+
ENTRYPOINT ["/bin/sh", "/docker-entrypoint.sh"]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
services:
2+
ivypatroni1:
3+
image: ivorysql/docker-compose-ha-cluster:4.6-4.0.6-ubi8
4+
restart: always
5+
container_name: ivyhac1
6+
user: "ivorysql"
7+
environment:
8+
PATRONI_SCOPE: ivory-cluster
9+
ETCD_HOSTS: <cluster1_ip>:2379,<cluster2_ip>:2379,<cluster3_ip>:2379
10+
IVORYSQL_PASSWORD: 123456
11+
IVORYSQL_HOST_AUTH_METHOD: md5
12+
PATRONI_SERVICE_NAME: ivypatroni1
13+
IVORYSQL_HOST: <cluster1_ip>
14+
network_mode: host
15+
volumes:
16+
- /home/ivorysql/patroni:/var/local/ivorysql/ivorysql-4/patroni/
17+
- /home/ivorysql/ivydata:/var/local/ivorysql/ivorysql-4/data/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
services:
2+
ivypatroni2:
3+
image: ivorysql/docker-compose-ha-cluster:4.6-4.0.6-ubi8
4+
restart: always
5+
container_name: ivyhac2
6+
user: "ivorysql"
7+
environment:
8+
PATRONI_SCOPE: ivory-cluster
9+
ETCD_HOSTS: <cluster1_ip>:2379,<cluster2_ip>:2379,<cluster3_ip>:2379
10+
IVORYSQL_PASSWORD: 123456
11+
IVORYSQL_HOST_AUTH_METHOD: md5
12+
PATRONI_SERVICE_NAME: ivypatroni2
13+
IVORYSQL_HOST: <cluster2_ip>
14+
network_mode: host
15+
volumes:
16+
- /home/ivorysql/patroni:/var/local/ivorysql/ivorysql-4/patroni/
17+
- /home/ivorysql/ivydata:/var/local/ivorysql/ivorysql-4/data/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
services:
2+
ivypatroni2:
3+
image: ivorysql/docker-compose-ha-cluster:4.6-4.0.6-ubi8
4+
restart: always
5+
container_name: ivyhac3
6+
user: "ivorysql"
7+
environment:
8+
PATRONI_SCOPE: ivory-cluster
9+
ETCD_HOSTS: <cluster1_ip>:2379,<cluster2_ip>:2379,<cluster3_ip>:2379
10+
IVORYSQL_PASSWORD: 123456
11+
IVORYSQL_HOST_AUTH_METHOD: md5
12+
PATRONI_SERVICE_NAME: ivypatroni3
13+
IVORYSQL_HOST: <cluster3_ip>
14+
network_mode: host
15+
volumes:
16+
- /home/ivorysql/patroni:/var/local/ivorysql/ivorysql-4/patroni/
17+
- /home/ivorysql/ivydata:/var/local/ivorysql/ivorysql-4/data/
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
if [ ! -f $PATRONICONF/patroni.yml ]; then
2+
echo "there is no patroni.yml, will generate patroni.yml "
3+
cat > $PATRONICONF/patroni.yml <<__EOF__
4+
scope: ${PATRONI_SCOPE}
5+
name: ${PATRONI_SERVICE_NAME}
6+
namespace: /service/
7+
8+
restapi:
9+
listen: 0.0.0.0:8008
10+
connect_address: ${IVORYSQL_HOST}:8008
11+
12+
etcd3:
13+
hosts: ${ETCD_HOSTS}
14+
bootstrap:
15+
dcs:
16+
ttl: 30
17+
loop_wait: 10
18+
retry_timeout: 10
19+
maximum_lag_on_failover: 1048576
20+
master_start_timeout: 300
21+
synchronous_mode: false
22+
postgresql:
23+
use_pg_rewind: true
24+
parameters:
25+
wal_level: replica
26+
hot_standby: "on"
27+
wal_keep_size: 100
28+
max_wal_senders: 10
29+
max_replication_slots: 10
30+
wal_log_hints: "on"
31+
archive_mode: "off"
32+
archive_timeout: 1800s
33+
logging_collector: "on"
34+
initdb:
35+
- encoding: 'UTF8'
36+
- locale: 'C'
37+
- auth: '${IVORYSQL_HOST_AUTH_METHOD}'
38+
39+
postgresql:
40+
database: ivorysql
41+
listen: 0.0.0.0:5432
42+
connect_address: ${IVORYSQL_HOST}:5432
43+
bin_dir: /var/local/ivorysql/ivorysql-$IVORY_MAJOR/bin
44+
data_dir: $PGDATA
45+
config_dir: $PGDATA
46+
pgpass: /tmp/.pgpass
47+
48+
49+
authentication:
50+
replication:
51+
username: ivorysql
52+
password: '${IVORYSQL_PASSWORD}'
53+
rewind:
54+
username: ivorysql
55+
password: '${IVORYSQL_PASSWORD}'
56+
superuser:
57+
username: ivorysql
58+
password: '${IVORYSQL_PASSWORD}'
59+
60+
parameters:
61+
ssl: 'off'
62+
logging_collector: on
63+
log_directory: 'log'
64+
unix_socket_directories: '..'
65+
66+
pg_hba:
67+
- local all all peer
68+
- host all all 0.0.0.0/0 ${IVORYSQL_HOST_AUTH_METHOD}
69+
- host all all ::1/128 ${IVORYSQL_HOST_AUTH_METHOD}
70+
- local replication all peer
71+
- host replication all 0.0.0.0/0 ${IVORYSQL_HOST_AUTH_METHOD}
72+
- host replication all ::1/128 ${IVORYSQL_HOST_AUTH_METHOD}
73+
74+
tags:
75+
nofailover: false
76+
noloadbalance: false
77+
clonefrom: false
78+
nosync: false
79+
80+
log:
81+
level: INFO
82+
traceback_level: INFO
83+
dir: $PATRONICONF
84+
__EOF__
85+
86+
else
87+
echo "will substitute patroni.yml with real value"
88+
fi
89+
90+
91+
echo "will start patroni......"
92+
patroni $PATRONICONF/patroni.yml
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
services:
2+
ivypatroni1:
3+
image: ivorysql/docker-compose-ha-cluster:4.6-4.0.6-ubi8
4+
restart: always
5+
container_name: ivyhac1
6+
user: "ivorysql"
7+
environment:
8+
PATRONI_SCOPE: ivory-cluster
9+
ETCD_HOSTS: etcd1:2379,etcd2:2379,etcd3:2379
10+
IVORYSQL_PASSWORD: 123456
11+
IVORYSQL_HOST_AUTH_METHOD: md5
12+
PATRONI_SERVICE_NAME: ivypatroni1
13+
IVORYSQL_HOST: ivorysql1
14+
volumes:
15+
- /home/ivorysql/patroni:/var/local/ivorysql/ivorysql-4/patroni/
16+
- /home/ivorysql/ivydata:/var/local/ivorysql/ivorysql-4/data/
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
services:
2+
ivypatroni2:
3+
image: ivorysql/docker-compose-ha-cluster:4.6-4.0.6-ubi8
4+
restart: always
5+
container_name: ivyhac2
6+
user: "ivorysql"
7+
environment:
8+
PATRONI_SCOPE: ivory-cluster
9+
ETCD_HOSTS: etcd1:2379,etcd2:2379,etcd3:2379
10+
IVORYSQL_PASSWORD: 123456
11+
IVORYSQL_HOST_AUTH_METHOD: md5
12+
PATRONI_SERVICE_NAME: ivypatroni2
13+
IVORYSQL_HOST: ivorysql2
14+
volumes:
15+
- /home/ivorysql/patroni:/var/local/ivorysql/ivorysql-4/patroni/
16+
- /home/ivorysql/ivydata:/var/local/ivorysql/ivorysql-4/data/

0 commit comments

Comments
 (0)