|  | @@ -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 GID=1000
 | 
	
	
		
			
				|  | @@ -8,23 +9,43 @@ RUN deluser --remove-home node \
 | 
	
		
			
				|  |  |      && adduser -SD -u ${UID} 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
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  WORKDIR /opt/app
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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_PRIMARY_COLOR="#03a9f4"
 | 
	
		
			
				|  |  |  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_SHORT=true
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -ENV FRONTEND_MODE=${FRONTEND_MODE} \
 | 
	
		
			
				|  |  | -    FRONTEND_PROD_DEVTOOLS=${FRONTEND_PROD_DEVTOOLS} \
 | 
	
		
			
				|  |  | +ENV APP_ENV=development \
 | 
	
		
			
				|  |  |      MUSARE_SITENAME=${MUSARE_SITENAME} \
 | 
	
		
			
				|  |  |      MUSARE_PRIMARY_COLOR=${MUSARE_PRIMARY_COLOR} \
 | 
	
		
			
				|  |  |      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}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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 --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
 |