Skip to content

Commit 875bfa9

Browse files
committed
new: create all-in-one image based on ubuntu to allow arm64 builds
1 parent de46c1a commit 875bfa9

File tree

2 files changed

+51
-19
lines changed

2 files changed

+51
-19
lines changed

deploy/docker/Dockerfile

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends gosu \
3333
&& addgroup --system --gid 9001 lowcoder \
3434
&& adduser --system --disabled-password --no-create-home --uid 9001 --gid 9001 lowcoder
3535

36+
3637
# Copy lowcoder server configuration
3738
COPY --chown=lowcoder:lowcoder --from=build-api-service /lowcoder/api-service /lowcoder/api-service
3839

@@ -145,7 +146,7 @@ RUN yarn build
145146
## To create a separate image out of it, build it with:
146147
## DOCKER_BUILDKIT=1 docker build -f deploy/docker/Dockerfile -t lowcoderorg/lowcoder-ce-frontend --target lowcoder-ce-frontend .
147148
##
148-
FROM nginx:1.25.1 AS lowcoder-ce-frontend
149+
FROM nginx:1.27.1 AS lowcoder-ce-frontend
149150
LABEL maintainer="lowcoder"
150151

151152
# Change default nginx user into lowcoder user and remove default nginx config
@@ -186,27 +187,29 @@ EXPOSE 3443
186187
##
187188
## Build Lowcoder all-in-one image
188189
##
189-
FROM lowcoder-ce-frontend
190+
FROM ubuntu:jammy
190191
LABEL maintainer="lowcoder"
191192

192-
RUN apt-get update && apt-get upgrade -y \
193-
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y curl ca-certificates gnupg \
193+
# Install essential tools
194+
RUN apt-get update \
195+
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y curl ca-certificates gnupg bash lsb-release \
194196
&& rm -rf /var/cache/apt/lists /var/lib/apt/lists/* /var/log/dpkg.log \
195197
&& apt-get clean
196198

197-
# Add nodejs repo and keys
198-
RUN mkdir -p /etc/apt/keyrings \
199-
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
200-
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
199+
# Add required apt repositories and signing keys
200+
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource-keyring.gpg \
201+
&& echo "deb [signed-by=/usr/share/keyrings/nodesource-keyring.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
202+
&& curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg \
203+
&& echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb `lsb_release -cs` main" | tee /etc/apt/sources.list.d/redis.list \
204+
&& curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg \
205+
&& echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu `lsb_release -cs`/mongodb-org/7.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list \
206+
&& curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg \
207+
&& echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
201208

202209

203210
# Install required packages
204-
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y bash gnupg curl lsb-release \
205-
&& curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg \
206-
&& echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb bookworm main" | tee /etc/apt/sources.list.d/redis.list \
207-
&& curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg \
208-
&& echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list \
209-
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends -y \
211+
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends -y \
212+
nginx=1.27.1-1~jammy \
210213
mongodb-org \
211214
redis \
212215
supervisor \
@@ -215,10 +218,39 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-instal
215218
openjdk-17-jdk-headless \
216219
&& npm install -g yarn \
217220
&& rm -rf /var/cache/apt/lists /var/lib/apt/lists/* /var/log/dpkg.log \
218-
&& mkdir -p /lowcoder/assets \
219221
&& apt-get clean \
220222
&& rm -rf /tmp/*
221223

224+
# Use configuration setup from official nginx image
225+
RUN rm -rf /etc/nginx/nginx.conf
226+
COPY --from=nginx:1.27.1 /docker-entrypoint.d /docker-entrypoint.d
227+
COPY --from=nginx:1.27.1 /docker-entrypoint.sh /docker-entrypoint.sh
228+
229+
# Add lowcoder user
230+
RUN usermod --login lowcoder --uid 9001 nginx \
231+
&& groupmod --new-name lowcoder --gid 9001 nginx
232+
233+
# Copy additional nginx init scripts and configs
234+
COPY --chmod=0755 deploy/docker/frontend/00-change-nginx-user.sh /docker-entrypoint.d/00-change-nginx-user.sh
235+
COPY --chmod=0755 deploy/docker/frontend/01-update-nginx-conf.sh /docker-entrypoint.d/01-update-nginx-conf.sh
236+
COPY deploy/docker/frontend/server.conf /etc/nginx/server.conf
237+
COPY deploy/docker/frontend/nginx-http.conf /etc/nginx/nginx-http.conf
238+
COPY deploy/docker/frontend/nginx-https.conf /etc/nginx/nginx-https.conf
239+
COPY deploy/docker/frontend/ssl-certificate.conf /etc/nginx/ssl-certificate.conf
240+
COPY deploy/docker/frontend/ssl-params.conf /etc/nginx/ssl-params.conf
241+
242+
243+
# Add lowcoder frontend
244+
# copy lowcoder client
245+
COPY --chown=lowcoder:lowcoder --from=build-client /lowcoder-client/packages/lowcoder/build/ /lowcoder/client
246+
# copy lowcoder components
247+
COPY --chown=lowcoder:lowcoder --from=build-client /lowcoder-client/packages/lowcoder-comps/lowcoder-comps /lowcoder/client-comps
248+
# copy lowcoder SDK
249+
COPY --chown=lowcoder:lowcoder --from=build-client /lowcoder-client/packages/lowcoder-sdk /lowcoder/client-sdk
250+
# copy lowcoder SDK webpack bundle
251+
COPY --chown=lowcoder:lowcoder --from=build-client /lowcoder-client/packages/lowcoder-sdk-webpack-bundle/dist /lowcoder/client-embed
252+
RUN mkdir -p /lowcoder/assets/ && chown lowcoder:lowcoder /lowcoder/assets/
253+
222254
# Add lowcoder api-service
223255
COPY --chown=lowcoder:lowcoder --from=lowcoder-ce-api-service /lowcoder/api-service /lowcoder/api-service
224256
RUN mkdir -p /lowcoder/plugins/ && chown lowcoder:lowcoder /lowcoder/plugins/

deploy/docker/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ Image can be configured by setting environment variables.
5151
| `LOWCODER_EMAIL_SIGNUP_ENABLED` | Control if users create their own Workspace automatic when Sign Up | `true` |
5252
| `LOWCODER_CREATE_WORKSPACE_ON_SIGNUP` | IF LOWCODER_WORKSPACE_MODE = SAAS, controls if a own workspace is created for the user after sign up | `true` |
5353
| `LOWCODER_MARKETPLACE_PRIVATE_MODE` | Control if not to show Apps on the local Marketplace to anonymous users | `true` |
54-
| `LOWCODER_SUPERUSER_USERNAME` | Username of the Super-User of an Lowcoder Installation | `admin@localhost` |
55-
| `LOWCODER_SUPERUSER_PASSWORD` | Control if not to show Apps on the local Marketplace to anonymous users | |
54+
| `LOWCODER_SUPERUSER_USERNAME` | Username of the Super-User of an Lowcoder Installation | `admin@localhost` |
55+
| `LOWCODER_SUPERUSER_PASSWORD` | Password of the Super-User, if not present or empty, it will be generated | `generated and printed into log file |
5656

5757

5858
Also you should set the API-KEY secret, whcih should be a string of at least 32 random characters. (from Lowcoder v2.3.x on)
@@ -115,8 +115,8 @@ Image can be configured by setting environment variables.
115115
| `LOWCODER_EMAIL_SIGNUP_ENABLED` | Control is users can create their own Workspace when Sign Up | `true` |
116116
| `LOWCODER_CREATE_WORKSPACE_ON_SIGNUP` | IF LOWCODER_WORKSPACE_MODE = SAAS, controls if a own workspace is created for the user after sign up | `true` |
117117
| `LOWCODER_MARKETPLACE_PRIVATE_MODE` | Control if not to show Apps on the local Marketplace to anonymous users | `true` |
118-
| `LOWCODER_SUPERUSER_USERNAME` | Username of the Super-User of an Lowcoder Installation | `admin@localhost` |
119-
| `LOWCODER_SUPERUSER_PASSWORD` | Control if not to show Apps on the local Marketplace to anonymous users | |
118+
| `LOWCODER_SUPERUSER_USERNAME` | Username of the Super-User of an Lowcoder Installation | `admin@localhost` |
119+
| `LOWCODER_SUPERUSER_PASSWORD` | Password of the Super-User, if not present or empty, it will be generated | `generated and printed into log file |
120120

121121
Also you should set the API-KEY secret, whcih should be a string of at least 32 random characters. (from Lowcoder v2.3.x on)
122122
On linux/mac, generate one eg. with: head /dev/urandom | head -c 30 | shasum -a 256

0 commit comments

Comments
 (0)