@@ -19,34 +19,56 @@ FROM ghcr.io/eclipse/openvsx-server:v0.16.0 AS openvsx-server
1919FROM registry.access.redhat.com/ubi8/ubi:8.10-1184 AS ubi-builder
2020RUN 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
3148COPY --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
3652WORKDIR /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
4261RUN 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
5274RUN sed -i /mnt/rootfs/etc/httpd/conf/httpd.conf \
@@ -76,30 +98,44 @@ RUN chmod g+rwx -R /mnt/rootfs/var/www/html/v3
7698FROM scratch
7799COPY --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
81112USER postgres
82113ENV 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