Skip to content

Commit ffc8047

Browse files
committed
Lightened container startup with replace script.
1 parent 666ad8c commit ffc8047

File tree

2 files changed

+41
-33
lines changed

2 files changed

+41
-33
lines changed

Dockerfile

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,32 @@
1-
# Use an official Node.js runtime as a parent image
21
FROM node:slim
32

4-
# Define default values for environment variables
5-
ARG APP_TITLE="STAC Manager"
6-
ARG APP_DESCRIPTION="A web application for managing STAC catalogs"
7-
ARG REACT_APP_STAC_API="https://earth-search.aws.element84.com/v0"
8-
ARG REACT_APP_STAC_BROWSER="https://radiantearth.github.io/stac-browser"
9-
ARG PUBLIC_URL="http://127.0.0.1:8080"
10-
ENV REACT_APP_KEYCLOAK_URL=
11-
ENV REACT_APP_KEYCLOAK_CLIENT_ID=
12-
ENV REACT_APP_KEYCLOAK_REALM=
13-
14-
ENV APP_TITLE=${APP_TITLE}
15-
ENV APP_DESCRIPTION=${APP_DESCRIPTION}
16-
ENV REACT_APP_STAC_API=${REACT_APP_STAC_API}
17-
ENV REACT_APP_STAC_BROWSER=${REACT_APP_STAC_BROWSER}
18-
ENV PUBLIC_URL=${PUBLIC_URL}
19-
ENV REACT_APP_KEYCLOAK_URL=${REACT_APP_KEYCLOAK_URL}
20-
ENV REACT_APP_KEYCLOAK_CLIENT_ID=${REACT_APP_KEYCLOAK_CLIENT_ID}
21-
ENV REACT_APP_KEYCLOAK_REALM=${REACT_APP_KEYCLOAK_REALM}
22-
23-
# Set the working directory
3+
ARG APP_TITLE=%APP_TITLE%
4+
ARG APP_DESCRIPTION=%APP_DESCRIPTION%
5+
ARG PUBLIC_URL=%PUBLIC_URL%
6+
ARG REACT_APP_STAC_API=%REACT_APP_STAC_API%
7+
ARG REACT_APP_STAC_BROWSER=%REACT_APP_STAC_BROWSER%
8+
ARG REACT_APP_KEYCLOAK_URL=%REACT_APP_KEYCLOAK_URL%
9+
ARG REACT_APP_KEYCLOAK_CLIENT_ID=%REACT_APP_KEYCLOAK_CLIENT_ID%
10+
ARG REACT_APP_KEYCLOAK_REALM=%REACT_APP_KEYCLOAK_REALM%
11+
ARG PRIMARY_COLOR=%PRIMARY_COLOR%
12+
ARG SECONDARY_COLOR=%SECONDARY_COLOR%
13+
2414
WORKDIR /app
2515

26-
# Copy the rest of the application code
2716
COPY . .
2817

29-
# Install dependencies
3018
RUN npm i
3119
RUN npm i -g http-server
20+
RUN npm run all:build
21+
RUN cp -v packages/client/dist/index.html packages/client/dist/404.html
3222

33-
# Create a start script that respects runtime environment variables
34-
RUN echo '#!/bin/sh\n\
35-
echo "Starting build"\n\
36-
npm run all:build\n\
37-
echo "App built successfully"\n\
38-
cp -v packages/client/dist/index.html packages/client/dist/404.html\n\
39-
echo "Starting server"\n\
40-
http-server -p 80 packages/client/dist' > /app/start.sh
23+
RUN apt-get update && apt-get install -y gettext-base sed
4124

42-
RUN chmod +x /app/start.sh
25+
# Set up entrypoint script
26+
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
27+
RUN chmod +x /app/docker-entrypoint.sh
4328

4429
EXPOSE 80
4530

46-
ENTRYPOINT ["/app/start.sh"]
31+
ENTRYPOINT ["/app/docker-entrypoint.sh"]
32+
CMD ["http-server", "-p", "80", "packages/client/dist"]

docker-entrypoint.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
set -e
3+
4+
echo "Startup script"
5+
echo "Replacing environment variables in built files..."
6+
7+
# Replace placeholders with env vars or defaults only in the built files
8+
find /app/packages/client/dist -type f \( -name "*.html" -o -name "*.js" -o -name "*.css" -o -name "*.map" -o -name "*.json" \) | xargs sed -i \
9+
-e "s|%APP_TITLE%|${APP_TITLE:-STAC Manager}|g" \
10+
-e "s|%APP_DESCRIPTION%|${APP_DESCRIPTION:-A web application for managing STAC catalogs}|g" \
11+
-e "s|%PUBLIC_URL%|${PUBLIC_URL:-http://127.0.0.1:8080}|g" \
12+
-e "s|%REACT_APP_STAC_API%|${REACT_APP_STAC_API:-https://earth-search.aws.element84.com/v0}|g" \
13+
-e "s|%REACT_APP_STAC_BROWSER%|${REACT_APP_STAC_BROWSER:-https://radiantearth.github.io/stac-browser/#/external/$(echo ${REACT_APP_STAC_API:-earth-search.aws.element84.com/v0} | sed 's|^https://||')}|g" \
14+
-e "s|%REACT_APP_KEYCLOAK_URL%|${REACT_APP_KEYCLOAK_URL:-}|g" \
15+
-e "s|%REACT_APP_KEYCLOAK_CLIENT_ID%|${REACT_APP_KEYCLOAK_CLIENT_ID:-}|g" \
16+
-e "s|%REACT_APP_KEYCLOAK_REALM%|${REACT_APP_KEYCLOAK_REALM:-}|g" \
17+
-e "s|%PRIMARY_COLOR%|${PRIMARY_COLOR:-}|g" \
18+
-e "s|%SECONDARY_COLOR%|${SECONDARY_COLOR:-}|g"
19+
20+
echo "Environment variable replacement complete"
21+
22+
exec "$@"

0 commit comments

Comments
 (0)