Skip to content

Commit 55bf6ce

Browse files
Build for s390x Architecture (#2042)
1 parent 0b4b31d commit 55bf6ce

File tree

1 file changed

+66
-30
lines changed

1 file changed

+66
-30
lines changed

build/dockerfiles/Dockerfile

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,56 @@ FROM ghcr.io/eclipse/openvsx-server:v0.16.0 AS openvsx-server
1919
FROM registry.access.redhat.com/ubi8/ubi:8.10-1184 AS ubi-builder
2020
RUN mkdir -p /mnt/rootfs
2121
# Install httpd and postgresql
22-
RUN yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
23-
RUN yum install --installroot /mnt/rootfs postgresql15-libs postgresql15 postgresql15-server \
24-
java-17-openjdk coreutils-single glibc-minimal-langpack glibc-langpack-en langpacks-en glibc-locale-source httpd nc \
25-
net-tools procps vi curl wget tar gzip jq\
26-
--releasever 8 --nodocs -y && \
22+
RUN ARCH=$(uname -m) && \
23+
if [ "$ARCH" = "s390x" ]; then \
24+
echo "Installing base packages for s390x"; \
25+
yum install --installroot /mnt/rootfs \
26+
java-17-openjdk coreutils-single glibc-minimal-langpack glibc-langpack-en langpacks-en glibc-locale-source httpd nc \
27+
net-tools procps vi curl wget tar gzip jq \
28+
--releasever 8 --nodocs -y; \
29+
\
30+
# Create PostgreSQL directories and user manually \
31+
mkdir -p /mnt/rootfs/var/lib/pgsql/data && \
32+
mkdir -p /mnt/rootfs/usr/libexec/postgresql && \
33+
echo "postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash" >> /mnt/rootfs/etc/passwd && \
34+
echo "postgres:x:26:" >> /mnt/rootfs/etc/group; \
35+
else \
36+
echo "Installing PostgreSQL for architecture: $ARCH"; \
37+
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm && \
38+
yum install --installroot /mnt/rootfs \
39+
postgresql15 postgresql15-server postgresql15-libs \
40+
java-17-openjdk coreutils-single glibc-minimal-langpack glibc-langpack-en langpacks-en glibc-locale-source httpd nc \
41+
net-tools procps vi curl wget tar gzip jq \
42+
--releasever 8 --nodocs -y; \
43+
fi && \
2744
yum --installroot /mnt/rootfs clean all && \
2845
rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.*
2946

3047
# Copy OpenVSX server files
3148
COPY --from=openvsx-server --chown=0:0 /home/openvsx/server /mnt/rootfs/openvsx-server
3249
# Copy our configuration file for OpenVSX server
33-
COPY /build/dockerfiles/application.yaml /mnt/rootfs/openvsx-server/config/
34-
50+
COPY ./build/dockerfiles/application.yaml /mnt/rootfs/openvsx-server/config/
3551
# use the final root filesystem as default directory
3652
WORKDIR /mnt/rootfs
3753

3854
# apply permissions to later change these files on httpd and postgres
39-
RUN chmod g+rwx /mnt/rootfs/var/log/httpd && chmod g+rw /mnt/rootfs/run/httpd && chmod g+rw /mnt/rootfs/var/lib/pgsql
55+
RUN chmod g+rwx /mnt/rootfs/var/log/httpd && \
56+
mkdir -p /mnt/rootfs/run/httpd && chmod g+rw /mnt/rootfs/run/httpd && \
57+
mkdir -p /mnt/rootfs/var/lib/pgsql && chmod g+rw /mnt/rootfs/var/lib/pgsql && \
58+
mkdir -p /mnt/rootfs/var/run/postgresql
4059

4160
# create user template
4261
RUN cat /mnt/rootfs/etc/passwd | sed s#root:x.*#root:x:\${USER_ID}:\${GROUP_ID}::\${HOME}:/bin/bash#g > /mnt/rootfs/.passwd.template \
43-
&& cat /mnt/rootfs/etc/group | sed s#root:x:0:#root:x:0:0,\${USER_ID}:#g > /mnt/rootfs/.group.template
62+
&& cat /mnt/rootfs/etc/group | sed s#root:x:0:#root:x:0:0,\${USER_ID}:#g > /mnt/rootfs/.group.template
4463

4564
# change permissions
46-
RUN for f in "/mnt/rootfs/etc/passwd" "/mnt/rootfs/etc/group" "/mnt/rootfs/var/lib/pgsql" "/mnt/rootfs/usr/pgsql-15" "/mnt/rootfs/var/run/postgresql"; do\
47-
chgrp -R 0 ${f} && \
48-
chmod -R g+rwX ${f}; \
49-
done
65+
RUN ARCH=$(uname -m) && \
66+
for f in "/mnt/rootfs/etc/passwd" "/mnt/rootfs/etc/group" "/mnt/rootfs/var/lib/pgsql" "/mnt/rootfs/var/run/postgresql"; do \
67+
chgrp -R 0 ${f} && chmod -R g+rwX ${f}; \
68+
done && \
69+
if [ "$ARCH" != "s390x" ]; then \
70+
chgrp -R 0 /mnt/rootfs/usr/pgsql-15 && chmod -R g+rwX /mnt/rootfs/usr/pgsql-15; \
71+
fi
5072

5173
# Apply httpd config file
5274
RUN sed -i /mnt/rootfs/etc/httpd/conf/httpd.conf \
@@ -76,30 +98,44 @@ RUN chmod g+rwx -R /mnt/rootfs/var/www/html/v3
7698
FROM scratch
7799
COPY --from=ubi-builder /mnt/rootfs/ /
78100
# Add UTF-8 for the database
79-
RUN localedef -f UTF-8 -i en_US en_US.UTF-8 && \
80-
usermod -a -G apache,root,postgres postgres
101+
RUN ARCH=$(uname -m) && \
102+
localedef -f UTF-8 -i en_US en_US.UTF-8 && \
103+
if grep -q "^postgres:" /etc/group; then \
104+
usermod -a -G apache,root,postgres postgres; \
105+
else \
106+
groupadd -r postgres && \
107+
useradd -r -g postgres postgres && \
108+
usermod -a -G apache,root postgres; \
109+
fi
110+
111+
RUN chmod g+w /entrypoint.sh
81112
USER postgres
82113
ENV LC_ALL=en_US.UTF-8 \
83114
LANG=en_US.UTF-8 \
84115
LANGUAGE=en_US.UTF-8 \
85-
PGDATA=/var/lib/pgsql/15/data/database \
86116
# Use a cached version of the license list and not go over the internet
87117
# it's needed for openvsx server when vsix is publishing on AirGap environment.
88118
# Set Xmx to run openvsx server
119+
PGDATA=/var/lib/pgsql/15/data/database \
89120
JVM_ARGS="-DSPDXParser.OnlyUseLocalLicenses=true -Xmx2048m"
90121

91-
RUN /usr/pgsql-15/bin/initdb && \
92-
# Add all vsix files to the database
93-
/import-vsix.sh && \
94-
# add permissions for anyuserid
95-
chgrp -R 0 /var/lib/pgsql/15/data/database && \
96-
#cleanup postgresql pid
97-
rm /var/lib/pgsql/15/data/database/postmaster.pid && \
98-
rm /var/run/postgresql/.s.PGSQL* && \
99-
rm /tmp/.s.PGSQL* && \
100-
rm /tmp/.lock && \
101-
chmod -R 777 /tmp/file && \
102-
chmod -R g+rwX /var/lib/pgsql/15/data/database && mv /var/lib/pgsql/15/data/database /var/lib/pgsql/15/data/old
103-
ENTRYPOINT ["/entrypoint.sh"]
104-
122+
RUN ARCH=$(uname -m) && \
123+
if [ "$ARCH" = "s390x" ]; then \
124+
echo "Skipping PostgreSQL initialization for s390x"; \
125+
mkdir -p /var/lib/pgsql/data/old; \
126+
echo "export PGDATA=/var/lib/pgsql/data/database" >> $HOME/.bashrc; \
127+
else \
128+
/usr/pgsql-15/bin/initdb && \
129+
/import-vsix.sh && \
130+
echo "export PGDATA=/var/lib/pgsql/15/data/database" >> $HOME/.bashrc && \
131+
chgrp -R 0 /var/lib/pgsql/15/data/database && \
132+
rm -f /var/lib/pgsql/15/data/database/postmaster.pid && \
133+
rm -f /var/run/postgresql/.s.PGSQL* && \
134+
rm -f /tmp/.s.PGSQL* && \
135+
rm -f /tmp/.lock && \
136+
chmod -R 777 /tmp/file && \
137+
chmod -R g+rwX /var/lib/pgsql/15/data/database && \
138+
mv /var/lib/pgsql/15/data/database /var/lib/pgsql/15/data/old; \
139+
fi
105140
# append Brew metadata here
141+
ENTRYPOINT ["/entrypoint.sh"]

0 commit comments

Comments
 (0)