Skip to content

Commit e72a833

Browse files
committed
IvorySQL v5.0 release for docker library
1 parent 87343f2 commit e72a833

27 files changed

+2167
-367
lines changed

1/trixie/Dockerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ RUN chmod +x /usr/local/bin/gosu
112112

113113
FROM debian:trixie-slim
114114

115-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 1
119119
ENV IVORY_VERSION 1.17
@@ -137,13 +137,11 @@ RUN apt-get update && \
137137
libldap2 \
138138
libldap2-dev \
139139
libreadline-dev \
140-
libicu-dev && \
140+
libicu-dev \
141+
libossp-uuid-dev && \
141142
apt-get clean
142143

143144

144-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
145-
RUN chown -R ivorysql:ivorysql /usr/local/bin
146-
147145
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
148146

149147
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

3/bookworm/Dockerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ RUN chmod +x /usr/local/bin/gosu
112112

113113
FROM debian:bookworm-slim
114114

115-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 3
119119
ENV IVORY_VERSION 3.4
@@ -137,13 +137,11 @@ RUN apt-get update && \
137137
libldap-2.5-0 \
138138
libldap2-dev \
139139
libreadline-dev \
140-
libicu-dev && \
140+
libicu-dev \
141+
libossp-uuid-dev && \
141142
apt-get clean
142143

143144

144-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
145-
RUN chown -R ivorysql:ivorysql /usr/local/bin
146-
147145
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
148146

149147
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

3/trixie/Dockerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ RUN chmod +x /usr/local/bin/gosu
112112

113113
FROM debian:trixie-slim
114114

115-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 3
119119
ENV IVORY_VERSION 3.4
@@ -137,13 +137,11 @@ RUN apt-get update && \
137137
libldap2 \
138138
libldap2-dev \
139139
libreadline-dev \
140-
libicu-dev && \
140+
libicu-dev \
141+
libossp-uuid-dev && \
141142
apt-get clean
142143

143144

144-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
145-
RUN chown -R ivorysql:ivorysql /usr/local/bin
146-
147145
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
148146

149147
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

3/ubi8/Dockerfile

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,24 @@ RUN ARCH="$(uname -m)"; \
8383

8484
FROM redhat/ubi8:latest
8585

86-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
87-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
86+
RUN useradd -u 1000 ivorysql
87+
88+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql
89+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
8890

8991
ENV IVORY_MAJOR 3
9092
ENV IVORY_VERSION 3.4
9193

9294
RUN mkdir /docker-entrypoint-initdb.d
9395

94-
RUN useradd -u 1000 ivorysql
95-
96-
RUN dnf install -y \
97-
lz4 lz4-devel lz4-libs krb5-devel libxslt-devel libicu-devel && dnf -y clean all
96+
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo; \
97+
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
9898

99-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
100-
RUN chown -R ivorysql:ivorysql /usr/local/bin
99+
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm; \
100+
dnf install -y lz4 lz4-devel lz4-libs krb5-devel libxslt-devel libicu-devel; \
101+
dnf install -y e2fsprogs-devel libuuid-devel;\
102+
dnf install -y --enablerepo=*ower*ools uuid-devel;\
103+
dnf -y clean all
101104

102105
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
103106
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

4/bookworm/Dockerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ RUN chmod +x /usr/local/bin/gosu
112112

113113
FROM debian:bookworm-slim
114114

115-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 4
119119
ENV IVORY_VERSION 4.6
@@ -137,13 +137,11 @@ RUN apt-get update && \
137137
libldap-2.5-0 \
138138
libldap2-dev \
139139
libreadline-dev \
140-
libicu-dev && \
140+
libicu-dev \
141+
libossp-uuid-dev && \
141142
apt-get clean
142143

143144

144-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
145-
RUN chown -R ivorysql:ivorysql /usr/local/bin
146-
147145
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
148146

149147
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

4/trixie/Dockerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ RUN chmod +x /usr/local/bin/gosu
112112

113113
FROM debian:trixie-slim
114114

115-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
116-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117117

118118
ENV IVORY_MAJOR 4
119119
ENV IVORY_VERSION 4.6
@@ -137,13 +137,11 @@ RUN apt-get update && \
137137
libldap2 \
138138
libldap2-dev \
139139
libreadline-dev \
140-
libicu-dev && \
140+
libicu-dev \
141+
libossp-uuid-dev && \
141142
apt-get clean
142143

143144

144-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
145-
RUN chown -R ivorysql:ivorysql /usr/local/bin
146-
147145
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
148146

149147
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

4/ubi8/Dockerfile

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,24 @@ RUN ARCH="$(uname -m)"; \
8383

8484
FROM redhat/ubi8:latest
8585

86-
COPY --from=builder /var/local/ivorysql /var/local/ivorysql/
87-
COPY --from=builder /usr/local/bin/gosu /usr/local/bin/gosu
86+
RUN useradd -u 1000 ivorysql
87+
88+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql
89+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
8890

8991
ENV IVORY_MAJOR 4
9092
ENV IVORY_VERSION 4.6
9193

9294
RUN mkdir /docker-entrypoint-initdb.d
9395

94-
RUN useradd -u 1000 ivorysql
95-
96-
RUN dnf install -y \
97-
lz4 lz4-devel lz4-libs krb5-devel libxslt-devel libicu-devel && dnf -y clean all
96+
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo; \
97+
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
9898

99-
RUN chown -R ivorysql:ivorysql /var/local/ivorysql
100-
RUN chown -R ivorysql:ivorysql /usr/local/bin
99+
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm; \
100+
dnf install -y lz4 lz4-devel lz4-libs krb5-devel libxslt-devel libicu-devel; \
101+
dnf install -y e2fsprogs-devel libuuid-devel;\
102+
dnf install -y --enablerepo=*ower*ools uuid-devel;\
103+
dnf -y clean all
101104

102105
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
103106
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)

5/bookworm/Dockerfile

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
#
2+
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
3+
#
4+
# PLEASE DO NOT EDIT IT DIRECTLY.
5+
#
6+
7+
# Use Debian as the base image
8+
FROM debian:bookworm-slim as builder
9+
10+
# explicitly set user/group IDs
11+
RUN groupadd -g 1000 ivorysql; \
12+
useradd -u 1000 -g ivorysql -d /var/local/ivorysql -s /bin/sh ivorysql; \
13+
mkdir -p /var/local/ivorysql; \
14+
mkdir -p /usr/src/ivorysql; \
15+
mkdir -p /var/lib/ivorysql; \
16+
chown -R ivorysql:ivorysql /var/local/ivorysql; \
17+
chown -R ivorysql:ivorysql /usr/src/ivorysql; \
18+
chown -R ivorysql:ivorysql /var/lib/ivorysql
19+
20+
RUN mkdir /docker-entrypoint-initdb.d
21+
22+
# Set environment variables for IvorySQL
23+
ENV IVORY_MAJOR 5
24+
ENV IVORY_VERSION 5.0
25+
ARG USE_CHINA_MIRROR=false
26+
27+
# Use China mirror if specified
28+
RUN if [ "$USE_CHINA_MIRROR" = "true" ]; then \
29+
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources ;\
30+
fi
31+
32+
# Update package list and install necessary dependencies
33+
RUN apt-get update
34+
RUN apt-get install -y make \
35+
libreadline-dev \
36+
zlib1g-dev \
37+
libssl-dev \
38+
flex \
39+
wget \
40+
dpkg \
41+
build-essential \
42+
llvm \
43+
llvm-dev \
44+
liblz4-dev \
45+
clang \
46+
libkrb5-dev \
47+
libselinux1-dev \
48+
libxml2-dev \
49+
libsasl2-dev \
50+
libicu-dev \
51+
e2fslibs-dev \
52+
libsepol-dev \
53+
libsystemd-dev \
54+
libxslt1-dev \
55+
libldap2-dev \
56+
libssl-dev \
57+
libpam0g-dev \
58+
uuid-dev \
59+
python3-dev \
60+
libreadline-dev \
61+
tcl-dev \
62+
zlib1g-dev \
63+
perl \
64+
libperl-dev \
65+
perl \
66+
perl-base \
67+
perl-modules \
68+
perl-doc \
69+
m4 \
70+
libc6 \
71+
libbison-dev\
72+
libossp-uuid-dev\
73+
curl
74+
75+
RUN wget https://mirrors.ustc.edu.cn/gnu/bison/bison-3.0.4.tar.gz; \
76+
tar -xzvf bison-3.0.4.tar.gz; \
77+
cd bison-3.0.4 ; \
78+
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c ;\
79+
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h ;\
80+
mkdir build && cd build ;\
81+
../configure ;\
82+
make && make install ;
83+
84+
RUN wget -O ivorysql.tar.gz "https://github.com/IvorySQL/IvorySQL/archive/refs/tags/IvorySQL_$IVORY_VERSION.tar.gz"; \
85+
tar \
86+
--extract \
87+
--file ivorysql.tar.gz \
88+
--directory /usr/src/ivorysql \
89+
--strip-components 1 \
90+
; \
91+
rm ivorysql.tar.gz; \
92+
cd /usr/src/ivorysql; \
93+
./configure \
94+
--prefix=/var/local/ivorysql/ivorysql-$IVORY_MAJOR \
95+
--enable-cassert --enable-debug --enable-rpath --with-tcl \
96+
--with-python --with-gssapi --with-pam --with-ldap \
97+
--with-openssl --with-libedit-preferred --with-uuid=e2fs \
98+
--with-ossp-uuid --with-libxml --with-libxslt --with-perl \
99+
--without-icu \
100+
;\
101+
make && make install;
102+
103+
RUN rm -rf \
104+
/usr/src/ivorysql \
105+
/usr/local/share/doc \
106+
/usr/local/share/man
107+
108+
RUN chown -R ivorysql:ivorysql /var/local/ivorysql/ivorysql-$IVORY_MAJOR
109+
RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.11/gosu-$(dpkg --print-architecture)" # amd64 | arm64v8
110+
111+
RUN chmod +x /usr/local/bin/gosu
112+
113+
FROM debian:bookworm-slim
114+
115+
COPY --from=builder --chown=ivorysql:ivorysql /var/local/ivorysql /var/local/ivorysql/
116+
COPY --from=builder --chown=ivorysql:ivorysql /usr/local/bin/gosu /usr/local/bin/gosu
117+
118+
ENV IVORY_MAJOR 5
119+
ENV IVORY_VERSION 5.0
120+
ARG USE_CHINA_MIRROR=false
121+
RUN mkdir /docker-entrypoint-initdb.d
122+
123+
RUN useradd -u 1000 ivorysql
124+
125+
# Use China mirror if specified
126+
RUN if [ "$USE_CHINA_MIRROR" = "true" ]; then \
127+
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources ;\
128+
fi
129+
130+
RUN apt-get update && \
131+
apt-get install -y \
132+
liblz4-1 \
133+
liblz4-dev \
134+
libkrb5-dev \
135+
libxslt1-dev \
136+
libldap-common \
137+
libldap-2.5-0 \
138+
libldap2-dev \
139+
libreadline-dev \
140+
libicu-dev \
141+
libossp-uuid-dev && \
142+
apt-get clean
143+
144+
145+
ENV PGDATA /var/local/ivorysql/ivorysql-$IVORY_MAJOR/data
146+
147+
# this 1777 will be replaced by 0700 at runtime (allows semi-arbitrary "--user" values)
148+
RUN mkdir -p "$PGDATA" && chown -R ivorysql:ivorysql "$PGDATA" && chmod 1777 "$PGDATA"
149+
RUN mkdir -p /var/run/postgresql && chown -R ivorysql:ivorysql /var/run/postgresql && chmod 3777 /var/run/postgresql
150+
151+
VOLUME ["/var/local/ivorysql/ivorysql-$IVORY_MAJOR/data","/var/local/ivorysql/data"]
152+
153+
ENV PATH $PATH:/var/local/ivorysql/ivorysql-$IVORY_MAJOR/bin
154+
155+
COPY docker-entrypoint.sh docker-ensure-initdb.sh /usr/local/bin/
156+
RUN ln -sT docker-ensure-initdb.sh /usr/local/bin/docker-enforce-initdb.sh
157+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
158+
159+
ENTRYPOINT ["docker-entrypoint.sh"]
160+
161+
STOPSIGNAL SIGINT
162+
163+
EXPOSE 5432 5866 1521
164+
165+
CMD ["postgres"]

0 commit comments

Comments
 (0)