Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bb2858d

Browse files
committed
Reworked docker building process.
1 parent ddadf77 commit bb2858d

39 files changed

+3041
-926
lines changed

deploy/docker/Dockerfile

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
##
2+
## Create custom JRE for running Openblocks server application
3+
##
4+
FROM eclipse-temurin:17-jdk-jammy AS jre-build
5+
RUN jlink --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,java.security.jgss,java.security.sasl,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,java.xml,java.xml.crypto,jdk.accessibility,jdk.charsets,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,jdk.httpserver,jdk.incubator.foreign,jdk.incubator.vector,jdk.internal.vm.ci,jdk.jdwp.agent,jdk.jfr,jdk.jsobject,jdk.localedata,jdk.management,jdk.management.agent,jdk.management.jfr,jdk.naming.dns,jdk.naming.rmi,jdk.net,jdk.nio.mapmode,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported,jdk.xml.dom,jdk.zipfs,jdk.attach \
6+
--output /build/jre \
7+
--no-man-pages \
8+
--no-header-files \
9+
--compress=2
10+
11+
##
12+
## Build Openblocks api-service application
13+
##
14+
FROM maven:3.8-eclipse-temurin-17-alpine AS build-api-service
15+
COPY ./server/api-service /openblocks-server
16+
WORKDIR /openblocks-server
17+
RUN --mount=type=cache,target=/root/.m2 mvn -f pom.xml clean package -DskipTests
18+
19+
# Create required folder structure
20+
RUN mkdir -p /openblocks/api-service/plugins /openblocks/api-service/config /openblocks/api-service/logs
21+
22+
# Define openblocks main jar and plugin jars
23+
ARG JAR_FILE=/openblocks-server/openblocks-server/target/openblocks-server-1.0-SNAPSHOT.jar
24+
ARG PLUGIN_JARS=/openblocks-server/openblocks-plugins/*/target/*.jar
25+
26+
# Copy Java runtime for running server
27+
COPY --from=jre-build /build/jre /openblocks/api-service/jre
28+
29+
# Copy openblocks server application and plugins
30+
RUN cp ${JAR_FILE} /openblocks/api-service/server.jar \
31+
&& cp ${PLUGIN_JARS} /openblocks/api-service/plugins/
32+
33+
# Copy openblocks server configuration
34+
COPY server/api-service/openblocks-server/src/main/resources/selfhost/ce/application.yml /openblocks/api-service/config/
35+
COPY server/api-service/openblocks-server/src/main/resources/selfhost/ce/application-selfhost.yml /openblocks/api-service/config/
36+
37+
# Add bootstrapfile
38+
COPY deploy/docker/api-service/entrypoint.sh /openblocks/api-service/entrypoint.sh
39+
COPY deploy/docker/api-service/init.sh /openblocks/api-service/init.sh
40+
RUN chmod +x /openblocks/api-service/*.sh
41+
42+
##
43+
## Intermediary Openblocks api-service image
44+
##
45+
## To create a separate image out of it, build it with:
46+
## DOCKER_BUILDKIT=1 docker build -f deploy/docker/Dockerfile -t openblocksdev/openblocks-ce-api-service --target openblocks-ce-api-service .
47+
##
48+
FROM ubuntu:jammy as openblocks-ce-api-service
49+
LABEL maintainer="openblocks"
50+
51+
RUN apt-get update && apt-get install -y --no-install-recommends gosu \
52+
&& rm -rf /var/cache/apt/lists \
53+
&& addgroup --system --gid 9001 openblocks \
54+
&& adduser --system --disabled-password --no-create-home --uid 9001 --gid 9001 openblocks
55+
56+
# Copy openblocks server configuration
57+
COPY --chown=openblocks:openblocks --from=build-api-service /openblocks/api-service /openblocks/api-service
58+
59+
EXPOSE 8080
60+
CMD [ "sh" , "/openblocks/api-service/entrypoint.sh" ]
61+
62+
#############################################################################
63+
64+
##
65+
## Build openblocks node service
66+
##
67+
FROM ubuntu:jammy as build-node-service
68+
69+
RUN apt update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y curl xz-utils ca-certificates \
70+
&& mkdir -p /openblocks/node-service/nodejs
71+
72+
# Download and extract nodejs
73+
RUN curl -fsSL 'https://nodejs.org/dist/v19.4.0/node-v19.4.0-linux-x64.tar.xz' | tar --directory /openblocks/node-service/nodejs --strip-components=1 -Jxf -
74+
75+
# Install yarn
76+
ENV PATH="/openblocks/node-service/nodejs/bin:${PATH}"
77+
#RUN export PATH=${PATH}:/openblocks/node-service/nodejs/bin \
78+
RUN npm install -g yarn
79+
80+
# Copy and build the node-service app
81+
COPY server/node-service/ /openblocks/node-service/app/
82+
WORKDIR /openblocks/node-service/app/
83+
RUN yarn --immutable
84+
RUN yarn build
85+
86+
# Copy startup script
87+
COPY deploy/docker/node-service/entrypoint.sh /openblocks/node-service/entrypoint.sh
88+
COPY deploy/docker/node-service/init.sh /openblocks/node-service/init.sh
89+
RUN chmod +x /openblocks/node-service/*.sh
90+
91+
##
92+
## Intermediary Openblocks node service image
93+
##
94+
## To create a separate image out of it, build it with:
95+
## DOCKER_BUILDKIT=1 docker build -f deploy/docker/Dockerfile -t openblocksdev/openblocks-ce-node-service --target openblocks-ce-node-service .
96+
##
97+
FROM ubuntu:jammy as openblocks-ce-node-service
98+
LABEL maintainer="openblocks"
99+
100+
RUN apt-get update && apt-get install -y --no-install-recommends gosu \
101+
&& rm -rf /var/cache/apt/lists \
102+
&& addgroup --system --gid 9001 openblocks \
103+
&& adduser --system --disabled-password --no-create-home --uid 9001 --gid 9001 openblocks
104+
105+
COPY --from=build-node-service /openblocks/node-service /openblocks/node-service
106+
107+
EXPOSE 6060
108+
CMD [ "/bin/sh", "/openblocks/node-service/entrypoint.sh" ]
109+
110+
#############################################################################
111+
112+
##
113+
## Build openblocks client application
114+
##
115+
FROM node:19.4-slim AS build-client
116+
COPY ./client /openblocks-client
117+
WORKDIR /openblocks-client
118+
RUN yarn --immutable
119+
120+
# curl is required for yarn build to succeed, because it calls it while building client
121+
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates
122+
123+
ARG REACT_APP_COMMIT_ID=test
124+
ARG REACT_APP_ENV=production
125+
ARG REACT_APP_EDITION=community
126+
RUN yarn build
127+
128+
129+
##
130+
## Intermediary Openblocks client image
131+
##
132+
## To create a separate image out of it, build it with:
133+
## DOCKER_BUILDKIT=1 docker build -f deploy/docker/Dockerfile -t openblocksdev/openblocks-ce-frontend --target openblocks-ce-frontend .
134+
##
135+
FROM nginx:1.23.3 as openblocks-ce-frontend
136+
LABEL maintainer="openblocks"
137+
138+
# Change default nginx user into openblocks user
139+
RUN usermod --login openblocks --uid 9001 nginx \
140+
&& groupmod --new-name openblocks --gid 9001 nginx
141+
142+
# Copy openblocks client data
143+
COPY --chown=openblocks:openblocks --from=build-client /openblocks-client/packages/openblocks/build/ /openblocks/client
144+
145+
# Copy additional nginx init scripts
146+
COPY deploy/docker/frontend/00-change-nginx-user.sh /docker-entrypoint.d/00-change-nginx-user.sh
147+
COPY deploy/docker/frontend/01-update-nginx-conf.sh /docker-entrypoint.d/01-update-nginx-conf.sh
148+
149+
RUN chmod +x /docker-entrypoint.d/00-change-nginx-user.sh && \
150+
chmod +x /docker-entrypoint.d/01-update-nginx-conf.sh
151+
152+
COPY deploy/docker/frontend/nginx.conf /etc/nginx/nginx.conf
153+
EXPOSE 3000
154+
155+
#############################################################################
156+
157+
##
158+
## Build Openblocks all-in-one image
159+
##
160+
FROM openblocks-ce-frontend
161+
LABEL maintainer="openblocks"
162+
163+
# Install required packages
164+
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y bash gnupg curl lsb-release \
165+
&& curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg \
166+
&& echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb bullseye main" | tee /etc/apt/sources.list.d/redis.list \
167+
&& curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg \
168+
&& echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list \
169+
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends -y \
170+
mongodb-org=4.4.6 \
171+
redis \
172+
supervisor \
173+
gosu \
174+
&& rm -rf /var/cache/apt/lists
175+
176+
# Add openblocks api-service
177+
COPY --chown=openblocks:openblocks --from=openblocks-ce-api-service /openblocks/api-service /openblocks/api-service
178+
179+
# Add openblocks node-service
180+
COPY --chown=openblocks:openblocks --from=openblocks-ce-node-service /openblocks/node-service /openblocks/node-service
181+
182+
# Add services configuration
183+
COPY --chown=openblocks:openblocks deploy/docker/all-in-one/etc /openblocks/etc
184+
185+
# Add startup script
186+
COPY --chown=openblocks:openblocks deploy/docker/all-in-one/entrypoint.sh /openblocks/entrypoint.sh
187+
188+
EXPOSE 3000
189+
190+
ENTRYPOINT [ "/bin/sh" , "/openblocks/entrypoint.sh" ]
191+
CMD ["/usr/bin/supervisord", "-n" , "-c" , "/openblocks/etc/supervisord.conf"]
192+

deploy/docker/Dockerfile.backend

Lines changed: 0 additions & 51 deletions
This file was deleted.

deploy/docker/Dockerfile.frontend

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)