Skip to content

Commit 44c1b22

Browse files
committed
Reworked docker image and created a helm chart.
1 parent 0ffa425 commit 44c1b22

34 files changed

+961
-2614
lines changed

‎deploy/docker/Dockerfile

-100
This file was deleted.

‎deploy/docker/Dockerfile.backend

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM maven:3.8.4-openjdk-17-slim AS build-server
2+
COPY ./server /openblocks-server
3+
WORKDIR /openblocks-server
4+
RUN --mount=type=cache,target=/root/.m2 mvn -f pom.xml clean package -DskipTests
5+
6+
FROM openjdk:17-slim AS jre-build
7+
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 \
8+
--output /build/jre \
9+
--no-man-pages \
10+
--no-header-files \
11+
--compress=2
12+
13+
FROM ubuntu:20.04
14+
LABEL maintainer="openblocks"
15+
16+
RUN apt-get update && DEBIAN_FRONTEND=noninteractive && \
17+
apt-get install --no-install-recommends -y \
18+
gosu \
19+
mongo-tools \
20+
&& rm -rf /var/lib/apt/lists/*
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+
# Create required folder structure
27+
RUN mkdir -p /openblocks /openblocks/plugins /openblocks/config /openblocks/logs && \
28+
ln -s /dev/null /openblocks/logs/main.log && \
29+
ln -s /dev/null /openblocks/logs/query-error.log
30+
31+
# Copy Java runtime for running server
32+
COPY --from=jre-build /build/jre /openblocks/jre
33+
34+
# Copy openblocks server application and plugins
35+
COPY --from=build-server ${JAR_FILE} /openblocks/server.jar
36+
COPY --from=build-server ${PLUGIN_JARS} /openblocks/plugins/
37+
38+
# Copy openblocks server configuration
39+
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application.yml /openblocks/config/
40+
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application-selfhost.yml /openblocks/config/
41+
42+
# Add bootstrapfile
43+
COPY ./deploy/docker/backend/entrypoint.sh /entrypoint.sh
44+
RUN chmod +x /entrypoint.sh && \
45+
chmod g+rx,o+rx -R /openblocks/ && \
46+
chmod 777 /openblocks/logs/main.log && \
47+
chmod 777 /openblocks/logs/query-error.log
48+
49+
WORKDIR /openblocks
50+
ENTRYPOINT [ "sh" , "/entrypoint.sh" ]
51+

‎deploy/docker/Dockerfile.frontend

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
FROM node:slim AS build-client
2+
COPY ./client /openblocks-client
3+
WORKDIR /openblocks-client
4+
RUN yarn --immutable
5+
6+
ARG REACT_APP_COMMIT_ID=test
7+
ARG REACT_APP_ENV=production
8+
ARG REACT_APP_EDITION=community
9+
RUN PUBLIC_URL="." yarn build
10+
11+
FROM nginx:alpine-slim
12+
LABEL maintainer="openblocks"
13+
14+
# Install shadow package to be able to change nginx user and group id
15+
RUN apk add --no-cache \
16+
shadow
17+
18+
# Copy openblocks client data
19+
COPY --chown=nginx:nginx --from=build-client /openblocks-client/packages/openblocks/build/ /openblocks-client
20+
21+
# Copy additional nginx init scripts
22+
COPY ./deploy/docker/frontend/00-change-nginx-user.sh /docker-entrypoint.d/00-change-nginx-user.sh
23+
COPY ./deploy/docker/frontend/01-update-nginx-conf.sh /docker-entrypoint.d/01-update-nginx-conf.sh
24+
25+
RUN chmod +x /docker-entrypoint.d/00-change-nginx-user.sh && \
26+
chmod +x /docker-entrypoint.d/01-update-nginx-conf.sh
27+
28+
COPY ./deploy/docker/frontend/nginx.conf /etc/nginx/nginx.conf

‎deploy/docker/backend/entrypoint.sh

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
USER_ID=${UID:-9001}
6+
GROUP_ID=${GID:-9001}
7+
GROUP_NAME="openblocks_${GROUP_ID}"
8+
USER_NAME="openblocks_${USER_ID}"
9+
10+
groupadd -g $GROUP_ID $GROUP_NAME || true
11+
useradd -u $USER_ID -g $GROUP_ID $USER_NAME || true
12+
13+
APP_JAR="${APP_JAR:-/openblocks/server.jar}"
14+
JAVA_HOME=/openblocks/jre
15+
JAVA_OPTS="${JAVA_OPTS:-}"
16+
CUSTOM_APP_PROPERTIES="${APP_PROPERTIES}"
17+
CONTEXT_PATH=${CONTEXT_PATH:-/}
18+
19+
echo
20+
echo "Running openblocks server with:"
21+
echo " user id: ${USER_ID}"
22+
echo " group id: ${GROUP_ID}"
23+
echo " base path: ${CONTEXT_PATH}"
24+
echo
25+
${JAVA_HOME}/bin/java -version
26+
echo
27+
28+
exec gosu ${USER_ID}:${GROUP_ID} ${JAVA_HOME}/bin/java \
29+
-Djava.security.egd=file:/dev/./urandom \
30+
-Dhttps.protocols=TLSv1.1,TLSv1.2 \
31+
-Dlog4j2.formatMsgNoLookups=true \
32+
-Dspring.config.location="file:///openblocks/config/application.yml,file:///openblocks/config/application-selfhost.yml" \
33+
${JAVA_OPTS} \
34+
-jar "${APP_JAR}" --spring.webflux.base-path=${CONTEXT_PATH} ${CUSTOM_APP_PROPERTIES}
35+

‎deploy/docker/docker-compose.yaml

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
version: "3"
2+
services:
3+
4+
5+
mongodb:
6+
image: "mongo:4.4"
7+
container_name: mongodb
8+
environment:
9+
MONGO_INITDB_DATABASE: openblocks
10+
MONGO_INITDB_ROOT_USERNAME: openblocks
11+
MONGO_INITDB_ROOT_PASSWORD: secret123
12+
# Uncomment to save database data into local 'mongodata' folder
13+
# volumes:
14+
# - ./mogodata:/data/db
15+
restart: unless-stopped
16+
17+
redis:
18+
image: redis:7-alpine
19+
container_name: redis
20+
21+
openblocks-backend:
22+
image: openblocksdev/openblocks-ce-backend
23+
container_name: openblocks-backend
24+
# Enabled ports to be able to access backend from host
25+
# ports:
26+
# - "3080:8080"
27+
environment:
28+
UID: "9001"
29+
GID: "9001"
30+
#CONTEXT_PATH: "/"
31+
MONGODB_URI: "mongodb://openblocks:secret123@mongodb/openblocks?authSource=admin"
32+
REDIS_URL: "redis://redis:6379"
33+
ENCRYPTION_PASSWORD: "openblocks.dev"
34+
ENCRYPTION_SALT: "openblocks.dev"
35+
CORS_ALLOWED_DOMAINS: "*"
36+
restart: unless-stopped
37+
depends_on:
38+
- mongodb
39+
- redis
40+
41+
openblocks-frontend:
42+
image: openblocksdev/openblocks-ce-frontend
43+
container_name: openblocks-frontend
44+
ports:
45+
- "3000:3000"
46+
environment:
47+
UID: "9001"
48+
GID: "9001"
49+
#CONTEXT_PATH: "/"
50+
OPENBLOCKS_SERVER_URL: "http://openblocks-backend:8080"
51+
restart: unless-stopped
52+
depends_on:
53+
- openblocks-backend
54+

‎deploy/docker/entrypoint.sh

-45
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/sh
2+
3+
USER_ID=${UID:-9001}
4+
GROUP_ID=${GID:-9001}
5+
6+
usermod -u ${USER_ID} nginx || true
7+
groupmod -g ${GROUP_ID} nginx || true
8+
9+
echo "nginx user and group id modified."
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
# remove trailing slash(es)
4+
CONTEXT_PATH=$(echo "${CONTEXT_PATH:-}" | sed 's@/*$@@')
5+
ROOT_PATH="${CONTEXT_PATH}"
6+
if [ -z "${CONTEXT_PATH}" ]; then
7+
ROOT_PATH="/"
8+
fi;
9+
10+
sed -i "s@__CONTEXT_PATH__ {@${ROOT_PATH} {@" /etc/nginx/nginx.conf
11+
sed -i "s@__CONTEXT_PATH__@${CONTEXT_PATH}@" /etc/nginx/nginx.conf
12+
sed -i "s@__OPENBLOCKS_SERVER_URL__@${OPENBLOCKS_SERVER_URL:-http://localhost:3000}@" /etc/nginx/nginx.conf
13+

0 commit comments

Comments
 (0)