|
@@ -1,4 +1,5 @@
|
|
-FROM node:20-alpine AS frontend_base
|
|
|
|
|
|
+# Common base image
|
|
|
|
+FROM node:20-alpine AS common_base
|
|
|
|
|
|
ARG UID=1000
|
|
ARG UID=1000
|
|
ARG GID=1000
|
|
ARG GID=1000
|
|
@@ -8,23 +9,43 @@ RUN deluser --remove-home node \
|
|
&& adduser -SD -u ${UID} musare \
|
|
&& adduser -SD -u ${UID} musare \
|
|
&& adduser musare musare
|
|
&& adduser musare musare
|
|
|
|
|
|
-RUN mkdir -p /opt/.git /opt/common /opt/types /opt/app /run/nginx \
|
|
|
|
|
|
+RUN mkdir -p /opt/.git /opt/common /opt/types /opt/app \
|
|
&& chown -R musare:musare /opt/app
|
|
&& chown -R musare:musare /opt/app
|
|
|
|
|
|
WORKDIR /opt/app
|
|
WORKDIR /opt/app
|
|
|
|
|
|
USER musare
|
|
USER musare
|
|
|
|
|
|
-FROM frontend_base AS frontend_node_modules
|
|
|
|
|
|
+# Backend node modules
|
|
|
|
+FROM common_base AS backend_node_modules
|
|
|
|
+
|
|
|
|
+COPY --chown=musare:musare --link backend/package.json backend/package-lock.json /opt/app/
|
|
|
|
+
|
|
|
|
+RUN npm install
|
|
|
|
+
|
|
|
|
+# Backend development image
|
|
|
|
+FROM common_base AS backend
|
|
|
|
+
|
|
|
|
+ENV APP_ENV=development
|
|
|
|
+
|
|
|
|
+COPY --chown=musare:musare --link .git /opt/.git
|
|
|
|
+COPY --chown=musare:musare --link common /opt/common
|
|
|
|
+COPY --chown=musare:musare --link types /opt/types
|
|
|
|
+COPY --chown=musare:musare --link backend /opt/app
|
|
|
|
+COPY --chown=musare:musare --link --from=backend_node_modules /opt/app/node_modules node_modules
|
|
|
|
+
|
|
|
|
+ENTRYPOINT sh /opt/app/entrypoint.dev.sh
|
|
|
|
+
|
|
|
|
+# Frontend node modules
|
|
|
|
+FROM common_base AS frontend_node_modules
|
|
|
|
|
|
COPY --chown=musare:musare --link frontend/package.json frontend/package-lock.json /opt/app/
|
|
COPY --chown=musare:musare --link frontend/package.json frontend/package-lock.json /opt/app/
|
|
|
|
|
|
RUN npm install
|
|
RUN npm install
|
|
|
|
|
|
-FROM frontend_base AS musare_frontend
|
|
|
|
|
|
+# Frontend development image
|
|
|
|
+FROM common_base AS frontend
|
|
|
|
|
|
-ARG FRONTEND_MODE=production
|
|
|
|
-ARG FRONTEND_PROD_DEVTOOLS=false
|
|
|
|
ARG MUSARE_SITENAME=Musare
|
|
ARG MUSARE_SITENAME=Musare
|
|
ARG MUSARE_PRIMARY_COLOR="#03a9f4"
|
|
ARG MUSARE_PRIMARY_COLOR="#03a9f4"
|
|
ARG MUSARE_DEBUG_VERSION=true
|
|
ARG MUSARE_DEBUG_VERSION=true
|
|
@@ -34,8 +55,7 @@ ARG MUSARE_DEBUG_GIT_BRANCH=true
|
|
ARG MUSARE_DEBUG_GIT_LATEST_COMMIT=true
|
|
ARG MUSARE_DEBUG_GIT_LATEST_COMMIT=true
|
|
ARG MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT=true
|
|
ARG MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT=true
|
|
|
|
|
|
-ENV FRONTEND_MODE=${FRONTEND_MODE} \
|
|
|
|
- FRONTEND_PROD_DEVTOOLS=${FRONTEND_PROD_DEVTOOLS} \
|
|
|
|
|
|
+ENV APP_ENV=development \
|
|
MUSARE_SITENAME=${MUSARE_SITENAME} \
|
|
MUSARE_SITENAME=${MUSARE_SITENAME} \
|
|
MUSARE_PRIMARY_COLOR=${MUSARE_PRIMARY_COLOR} \
|
|
MUSARE_PRIMARY_COLOR=${MUSARE_PRIMARY_COLOR} \
|
|
MUSARE_DEBUG_VERSION=${MUSARE_DEBUG_VERSION} \
|
|
MUSARE_DEBUG_VERSION=${MUSARE_DEBUG_VERSION} \
|
|
@@ -46,7 +66,10 @@ ENV FRONTEND_MODE=${FRONTEND_MODE} \
|
|
MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT=${MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT}
|
|
MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT=${MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT}
|
|
|
|
|
|
USER root
|
|
USER root
|
|
-RUN apk add nginx
|
|
|
|
|
|
+RUN apk update \
|
|
|
|
+ && apk add nginx \
|
|
|
|
+ && sed -i 's/user nginx;/user musare;/' /etc/nginx/nginx.conf \
|
|
|
|
+ && chown -R musare:musare /etc/nginx/http.d /run/nginx /var/lib/nginx /var/log/nginx
|
|
USER musare
|
|
USER musare
|
|
|
|
|
|
COPY --chown=musare:musare --link .git /opt/.git
|
|
COPY --chown=musare:musare --link .git /opt/.git
|
|
@@ -55,10 +78,4 @@ COPY --chown=musare:musare --link types /opt/types
|
|
COPY --chown=musare:musare --link frontend /opt/app
|
|
COPY --chown=musare:musare --link frontend /opt/app
|
|
COPY --chown=musare:musare --from=frontend_node_modules --link /opt/app/node_modules node_modules
|
|
COPY --chown=musare:musare --from=frontend_node_modules --link /opt/app/node_modules node_modules
|
|
|
|
|
|
-RUN sh -c '([[ "${FRONTEND_MODE}" == "development" ]] && exit 0) || npm run prod'
|
|
|
|
-
|
|
|
|
-RUN chmod u+x entrypoint.sh
|
|
|
|
-
|
|
|
|
-ENTRYPOINT sh /opt/app/entrypoint.sh
|
|
|
|
-
|
|
|
|
-EXPOSE 80/tcp
|
|
|
|
|
|
+ENTRYPOINT sh /opt/app/entrypoint.dev.sh
|