Loading .deploy/admin-web-angular/Dockerfile +9 −5 Original line number Diff line number Diff line # Ever Platform Admin UI (Angular) # Ever Demand Platform Admin UI (Angular) ARG API_BASE_URL ARG API_HOST Loading Loading @@ -69,9 +69,11 @@ COPY --chown=node:node --from=development /srv/ever . ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4200} ENV SENTRY_DSN=${SENTRY_DSN} ENV CHATWOOT_SDK_TOKEN=${CHATWOOT_SDK_TOKEN} ENV CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} ENV CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} Loading @@ -80,6 +82,7 @@ ENV GOOGLE_PLACE_AUTOCOMPLETE=${GOOGLE_PLACE_AUTOCOMPLETE:-false} ENV DEFAULT_LATITUDE=${DEFAULT_LATITUDE:-42.6459136} ENV DEFAULT_LONGITUDE=${DEFAULT_LONGITUDE:-23.3332736} ENV DEFAULT_CURRENCY=${DEFAULT_CURRENCY:-USD}_DSN} ENV DEMO=${DEMO:-false} ENV IS_DOCKER=true Loading @@ -100,14 +103,15 @@ COPY --chown=nginx:nginx --from=build /srv/ever/packages/admin-web-angular/build RUN chmod +x wait entrypoint.compose.sh entrypoint.prod.sh && \ chmod a+rw /etc/nginx/conf.d/compose.conf.template /etc/nginx/conf.d/prod.conf.template ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4200} ENV SENTRY_DSN=${SENTRY_DSN} ENV API_HOST=${API_HOST:-api} ENV API_PORT=${API_PORT:-3000} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV WEB_HOST=${WEB_HOST:-0.0.0.0} ENV WEB_PORT=${WEB_PORT:-4200} ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV SENTRY_DSN=${SENTRY_DSN} ENV DEMO=${DEMO:-false} EXPOSE ${WEB_PORT} Loading .deploy/api/Dockerfile +1 −1 Original line number Diff line number Diff line # Ever Platform API (Core) # Ever Demand Platform API (Core) ARG NODE_OPTIONS ARG NODE_ENV Loading .deploy/carrier-mobile-ionic/Dockerfile +132 −29 Original line number Diff line number Diff line FROM node:alpine AS development # Ever Demand Platform Carrier Mobile App (Ionic) RUN apk update \ ARG API_BASE_URL ARG API_HOST ARG API_PORT ARG CLIENT_BASE_URL ARG SENTRY_DSN ARG CHATWOOT_SDK_TOKEN ARG CLOUDINARY_CLOUD_NAME ARG CLOUDINARY_API_KEY ARG GOOGLE_MAPS_API_KEY ARG GOOGLE_ANALYTICS_API_KEY ARG GOOGLE_PLACE_AUTOCOMPLETE ARG DEFAULT_LATITUDE ARG DEFAULT_LONGITUDE ARG DEFAULT_CURRENCY ARG DEFAULT_LANGUAGE ARG DEMO ARG WEB_HOST ARG WEB_PORT ARG DEFAULT_CUSTOMER_LOGO ARG LOGIN_LOGO ARG NO_INTERNET_LOGO ARG COMPANY_NAME ARG APP_NAME ARG MIXPANEL_API_KEY ARG DEFAULT_LOGIN_USERNAME ARG DEFAULT_LOGIN_PASSWORD ARG GQL_ENDPOINT ARG GQL_SUBSCRIPTIONS_ENDPOINT ARG SERVICES_ENDPOINT ARG HTTPS_SERVICES_ENDPOINT ARG SETTINGS_APP_TYPE ARG SETTINGS_MAINTENANCE_API_URL FROM node:16-alpine3.11 AS dependencies LABEL maintainer="ever@ever.co" ENV CI=true RUN apk --update add bash \ && apk add libexecinfo libexecinfo-dev \ && npm i -g npm \ && apk --no-cache add --virtual builds-deps build-base \ snappy g++ snappy-dev gcc libgcc libstdc++ linux-headers autoconf automake make nasm python git \ && apk add --no-cache --virtual build-dependencies build-base \ snappy dos2unix g++ snappy-dev gcc libgcc libstdc++ linux-headers autoconf automake make nasm python2 py2-setuptools vips-dev git \ && npm install --quiet node-gyp -g \ && npm config set python /usr/bin/python \ && npm install yarn -g --force && npm install yarn -g --force \ && mkdir /srv/ever && chown -R node:node /srv/ever RUN mkdir /srv/ever && chown node:node /srv/ever COPY wait .deploy/carrier-mobile-ionic/entrypoint.compose.sh .deploy/carrier-mobile-ionic/entrypoint.prod.sh / USER node RUN chmod +x /wait /entrypoint.compose.sh /entrypoint.prod.sh && dos2unix /entrypoint.compose.sh && dos2unix /entrypoint.prod.sh USER node:node WORKDIR /srv/ever COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json ./ COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json tsconfig.base.json ./ COPY --chown=node:node packages/carrier-mobile-ionic/package.json ./packages/carrier-mobile-ionic/package.json COPY --chown=node:node .snyk ./.snyk COPY --chown=node:node packages/common ./packages/common COPY --chown=node:node packages/common-angular ./packages/common-angular COPY --chown=node:node packages/common/package.json ./packages/common/package.json COPY --chown=node:node packages/common-angular/package.json ./packages/common-angular/package.json RUN yarn bootstrap && yarn cache clean RUN yarn install FROM node:16-alpine3.11 AS development FROM node:alpine AS production USER node:node RUN npm install cross-env -g WORKDIR /srv/ever RUN mkdir /srv/ever && chown node:node /srv/ever RUN mkdir -p /srv/ever/packages/carrier-mobile-ionic && chown node:node /srv/ever/packages/carrier-mobile-ionic RUN mkdir -p /srv/ever/packages/common && chown node:node /srv/ever/packages/common RUN mkdir -p /srv/ever/packages/common-angular && chown node:node /srv/ever/packages/common-angular COPY --chown=node:node --from=dependencies /wait /entrypoint.compose.sh /entrypoint.prod.sh / COPY --chown=node:node --from=dependencies /srv/ever . COPY . . USER node FROM node:16-alpine3.11 AS build WORKDIR /srv/ever ARG NODE_OPTIONS="--max-old-space-size=2048" ENV NODE_OPTIONS $NODE_OPTIONS ENV NODE_ENV production RUN mkdir dist COPY --from=development --chown=node:node /srv/ever/node_modules ./node_modules COPY --from=development --chown=node:node /srv/ever/packages/common/node_modules ./packages/common/node_modules COPY --from=development --chown=node:node /srv/ever/packages/common-angular/node_modules ./packages/common-angular/node_modules COPY --from=development --chown=node:node /srv/ever/packages/carrier-mobile-ionic/node_modules ./packages/carrier-mobile-ionic/node_modules COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json tsconfig.base.json ./ COPY --chown=node:node packages/common ./packages/common COPY --chown=node:node packages/common-angular ./packages/common-angular COPY --chown=node:node packages/carrier-mobile-ionic ./packages/carrier-mobile-ionic No newline at end of file COPY --chown=node:node --from=development /srv/ever . ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4203} ENV SENTRY_DSN=${SENTRY_DSN} ENV CHATWOOT_SDK_TOKEN=${CHATWOOT_SDK_TOKEN} ENV CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} ENV CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} ENV GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY} ENV GOOGLE_ANALYTICS_API_KEY=${GOOGLE_ANALYTICS_API_KEY} ENV GOOGLE_PLACE_AUTOCOMPLETE=${GOOGLE_PLACE_AUTOCOMPLETE:-false} ENV DEFAULT_LATITUDE=${DEFAULT_LATITUDE:-42.6459136} ENV DEFAULT_LONGITUDE=${DEFAULT_LONGITUDE:-23.3332736} ENV DEFAULT_CURRENCY=${DEFAULT_CURRENCY:-USD}_DSN} ENV DEFAULT_LANGUAGE=${DEFAULT_LANGUAGE:-en} ENV DEFAULT_CUSTOMER_LOGO=${DEFAULT_CUSTOMER_LOGO} ENV LOGIN_LOGO=${LOGIN_LOGO} ENV NO_INTERNET_LOGO=${NO_INTERNET_LOGO} ENV COMPANY_NAME=${COMPANY_NAME} ENV APP_NAME=${APP_NAME} ENV MIXPANEL_API_KEY=${MIXPANEL_API_KEY} ENV DEFAULT_LOGIN_USERNAME=${DEFAULT_LOGIN_USERNAME} ENV DEFAULT_LOGIN_PASSWORD=${DEFAULT_LOGIN_PASSWORD} ENV GQL_ENDPOINT=${GQL_ENDPOINT} ENV GQL_SUBSCRIPTIONS_ENDPOINT=${GQL_SUBSCRIPTIONS_ENDPOINT} ENV SERVICES_ENDPOINT=${SERVICES_ENDPOINT} ENV HTTPS_SERVICES_ENDPOINT=${HTTPS_SERVICES_ENDPOINT} ENV SETTINGS_APP_TYPE=${SETTINGS_APP_TYPE} ENV SETTINGS_MAINTENANCE_API_URL=${SETTINGS_MAINTENANCE_API_URL} ENV DEMO=${DEMO:-false} ENV IS_DOCKER=true RUN yarn build:carrier FROM node:16-alpine3.11 AS production # USER nginx:nginx WORKDIR /srv/ever COPY --chown=nginx:nginx --from=dependencies /wait /entrypoint.prod.sh /entrypoint.compose.sh ./ COPY --chown=nginx:nginx .deploy/carrier-mobile-ionic/nginx.compose.conf /etc/nginx/conf.d/compose.conf.template COPY --chown=nginx:nginx .deploy/carrier-mobile-ionic/nginx.prod.conf /etc/nginx/conf.d/prod.conf.template COPY --chown=nginx:nginx --from=build /srv/ever/packages/carrier-mobile-ionic/www . RUN chmod +x wait entrypoint.compose.sh entrypoint.prod.sh && \ chmod a+rw /etc/nginx/conf.d/compose.conf.template /etc/nginx/conf.d/prod.conf.template ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4203} ENV SENTRY_DSN=${SENTRY_DSN} ENV API_HOST=${API_HOST:-api} ENV API_PORT=${API_PORT:-3000} ENV WEB_HOST=${WEB_HOST:-0.0.0.0} ENV WEB_PORT=${WEB_PORT:-4203} ENV DEMO=${DEMO:-false} EXPOSE ${WEB_PORT} ENTRYPOINT [ "./entrypoint.prod.sh" ] CMD [ "nginx", "-g", "daemon off;" ] .deploy/carrier-mobile-ionic/entrypoint.compose.sh 0 → 100644 +27 −0 Original line number Diff line number Diff line #!/bin/sh set -ex # This Entrypoint used inside Docker Compose only export WAIT_HOSTS=$API_HOST:$API_PORT # In production we should replace some values in generated JS code sed -i "s#DOCKER_API_BASE_URL#$API_BASE_URL#g" *.js sed -i "s#DOCKER_CLIENT_BASE_URL#$CLIENT_BASE_URL#g" *.js sed -i "s#DOCKER_SENTRY_DSN#$SENTRY_DSN#g" *.js sed -i "s#DOCKER_CLOUDINARY_CLOUD_NAME#$CLOUDINARY_CLOUD_NAME#g" *.js sed -i "s#DOCKER_CLOUDINARY_API_KEY#$CLOUDINARY_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_MAPS_API_KEY#$GOOGLE_MAPS_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_PLACE_AUTOCOMPLETE#$GOOGLE_PLACE_AUTOCOMPLETE#g" *.js sed -i "s#DOCKER_DEFAULT_LATITUDE#$DEFAULT_LATITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_LONGITUDE#$DEFAULT_LONGITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_CURRENCY#$DEFAULT_CURRENCY#g" *.js sed -i "s#DOCKER_CHATWOOT_SDK_TOKEN#$CHATWOOT_SDK_TOKEN#g" *.js sed -i "s#DOCKER_DEMO#$DEMO#g" *.js envsubst '${API_HOST} ${API_PORT}' < /etc/nginx/conf.d/compose.conf.template > /etc/nginx/nginx.conf # in Docker Compose we should wait other services start ./wait exec "$@" No newline at end of file .deploy/carrier-mobile-ionic/entrypoint.prod.sh 0 → 100644 +24 −0 Original line number Diff line number Diff line #!/bin/sh set -ex # This Entrypoint used when we run Docker container outside of Docker Compose (e.g. in k8s) # In production we should replace some values in generated JS code sed -i "s#DOCKER_API_BASE_URL#$API_BASE_URL#g" *.js sed -i "s#DOCKER_CLIENT_BASE_URL#$CLIENT_BASE_URL#g" *.js sed -i "s#DOCKER_SENTRY_DSN#$SENTRY_DSN#g" *.js sed -i "s#DOCKER_CLOUDINARY_CLOUD_NAME#$CLOUDINARY_CLOUD_NAME#g" *.js sed -i "s#DOCKER_CLOUDINARY_API_KEY#$CLOUDINARY_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_MAPS_API_KEY#$GOOGLE_MAPS_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_PLACE_AUTOCOMPLETE#$GOOGLE_PLACE_AUTOCOMPLETE#g" *.js sed -i "s#DOCKER_DEFAULT_LATITUDE#$DEFAULT_LATITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_LONGITUDE#$DEFAULT_LONGITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_CURRENCY#$DEFAULT_CURRENCY#g" *.js sed -i "s#DOCKER_CHATWOOT_SDK_TOKEN#$CHATWOOT_SDK_TOKEN#g" *.js sed -i "s#DOCKER_DEMO#$DEMO#g" *.js # We may not need to use that env vars now in nginx.config, but we may want later. # Also we just need to copy nginx.conf to correct place anyway... envsubst '' < /etc/nginx/conf.d/prod.conf.template > /etc/nginx/nginx.conf exec "$@" Loading
.deploy/admin-web-angular/Dockerfile +9 −5 Original line number Diff line number Diff line # Ever Platform Admin UI (Angular) # Ever Demand Platform Admin UI (Angular) ARG API_BASE_URL ARG API_HOST Loading Loading @@ -69,9 +69,11 @@ COPY --chown=node:node --from=development /srv/ever . ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4200} ENV SENTRY_DSN=${SENTRY_DSN} ENV CHATWOOT_SDK_TOKEN=${CHATWOOT_SDK_TOKEN} ENV CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} ENV CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} Loading @@ -80,6 +82,7 @@ ENV GOOGLE_PLACE_AUTOCOMPLETE=${GOOGLE_PLACE_AUTOCOMPLETE:-false} ENV DEFAULT_LATITUDE=${DEFAULT_LATITUDE:-42.6459136} ENV DEFAULT_LONGITUDE=${DEFAULT_LONGITUDE:-23.3332736} ENV DEFAULT_CURRENCY=${DEFAULT_CURRENCY:-USD}_DSN} ENV DEMO=${DEMO:-false} ENV IS_DOCKER=true Loading @@ -100,14 +103,15 @@ COPY --chown=nginx:nginx --from=build /srv/ever/packages/admin-web-angular/build RUN chmod +x wait entrypoint.compose.sh entrypoint.prod.sh && \ chmod a+rw /etc/nginx/conf.d/compose.conf.template /etc/nginx/conf.d/prod.conf.template ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4200} ENV SENTRY_DSN=${SENTRY_DSN} ENV API_HOST=${API_HOST:-api} ENV API_PORT=${API_PORT:-3000} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV WEB_HOST=${WEB_HOST:-0.0.0.0} ENV WEB_PORT=${WEB_PORT:-4200} ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV SENTRY_DSN=${SENTRY_DSN} ENV DEMO=${DEMO:-false} EXPOSE ${WEB_PORT} Loading
.deploy/api/Dockerfile +1 −1 Original line number Diff line number Diff line # Ever Platform API (Core) # Ever Demand Platform API (Core) ARG NODE_OPTIONS ARG NODE_ENV Loading
.deploy/carrier-mobile-ionic/Dockerfile +132 −29 Original line number Diff line number Diff line FROM node:alpine AS development # Ever Demand Platform Carrier Mobile App (Ionic) RUN apk update \ ARG API_BASE_URL ARG API_HOST ARG API_PORT ARG CLIENT_BASE_URL ARG SENTRY_DSN ARG CHATWOOT_SDK_TOKEN ARG CLOUDINARY_CLOUD_NAME ARG CLOUDINARY_API_KEY ARG GOOGLE_MAPS_API_KEY ARG GOOGLE_ANALYTICS_API_KEY ARG GOOGLE_PLACE_AUTOCOMPLETE ARG DEFAULT_LATITUDE ARG DEFAULT_LONGITUDE ARG DEFAULT_CURRENCY ARG DEFAULT_LANGUAGE ARG DEMO ARG WEB_HOST ARG WEB_PORT ARG DEFAULT_CUSTOMER_LOGO ARG LOGIN_LOGO ARG NO_INTERNET_LOGO ARG COMPANY_NAME ARG APP_NAME ARG MIXPANEL_API_KEY ARG DEFAULT_LOGIN_USERNAME ARG DEFAULT_LOGIN_PASSWORD ARG GQL_ENDPOINT ARG GQL_SUBSCRIPTIONS_ENDPOINT ARG SERVICES_ENDPOINT ARG HTTPS_SERVICES_ENDPOINT ARG SETTINGS_APP_TYPE ARG SETTINGS_MAINTENANCE_API_URL FROM node:16-alpine3.11 AS dependencies LABEL maintainer="ever@ever.co" ENV CI=true RUN apk --update add bash \ && apk add libexecinfo libexecinfo-dev \ && npm i -g npm \ && apk --no-cache add --virtual builds-deps build-base \ snappy g++ snappy-dev gcc libgcc libstdc++ linux-headers autoconf automake make nasm python git \ && apk add --no-cache --virtual build-dependencies build-base \ snappy dos2unix g++ snappy-dev gcc libgcc libstdc++ linux-headers autoconf automake make nasm python2 py2-setuptools vips-dev git \ && npm install --quiet node-gyp -g \ && npm config set python /usr/bin/python \ && npm install yarn -g --force && npm install yarn -g --force \ && mkdir /srv/ever && chown -R node:node /srv/ever RUN mkdir /srv/ever && chown node:node /srv/ever COPY wait .deploy/carrier-mobile-ionic/entrypoint.compose.sh .deploy/carrier-mobile-ionic/entrypoint.prod.sh / USER node RUN chmod +x /wait /entrypoint.compose.sh /entrypoint.prod.sh && dos2unix /entrypoint.compose.sh && dos2unix /entrypoint.prod.sh USER node:node WORKDIR /srv/ever COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json ./ COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json tsconfig.base.json ./ COPY --chown=node:node packages/carrier-mobile-ionic/package.json ./packages/carrier-mobile-ionic/package.json COPY --chown=node:node .snyk ./.snyk COPY --chown=node:node packages/common ./packages/common COPY --chown=node:node packages/common-angular ./packages/common-angular COPY --chown=node:node packages/common/package.json ./packages/common/package.json COPY --chown=node:node packages/common-angular/package.json ./packages/common-angular/package.json RUN yarn bootstrap && yarn cache clean RUN yarn install FROM node:16-alpine3.11 AS development FROM node:alpine AS production USER node:node RUN npm install cross-env -g WORKDIR /srv/ever RUN mkdir /srv/ever && chown node:node /srv/ever RUN mkdir -p /srv/ever/packages/carrier-mobile-ionic && chown node:node /srv/ever/packages/carrier-mobile-ionic RUN mkdir -p /srv/ever/packages/common && chown node:node /srv/ever/packages/common RUN mkdir -p /srv/ever/packages/common-angular && chown node:node /srv/ever/packages/common-angular COPY --chown=node:node --from=dependencies /wait /entrypoint.compose.sh /entrypoint.prod.sh / COPY --chown=node:node --from=dependencies /srv/ever . COPY . . USER node FROM node:16-alpine3.11 AS build WORKDIR /srv/ever ARG NODE_OPTIONS="--max-old-space-size=2048" ENV NODE_OPTIONS $NODE_OPTIONS ENV NODE_ENV production RUN mkdir dist COPY --from=development --chown=node:node /srv/ever/node_modules ./node_modules COPY --from=development --chown=node:node /srv/ever/packages/common/node_modules ./packages/common/node_modules COPY --from=development --chown=node:node /srv/ever/packages/common-angular/node_modules ./packages/common-angular/node_modules COPY --from=development --chown=node:node /srv/ever/packages/carrier-mobile-ionic/node_modules ./packages/carrier-mobile-ionic/node_modules COPY --chown=node:node package.json yarn.lock lerna.json package.workspaces.json tsconfig.base.json ./ COPY --chown=node:node packages/common ./packages/common COPY --chown=node:node packages/common-angular ./packages/common-angular COPY --chown=node:node packages/carrier-mobile-ionic ./packages/carrier-mobile-ionic No newline at end of file COPY --chown=node:node --from=development /srv/ever . ENV NODE_OPTIONS=${NODE_OPTIONS:-"--max-old-space-size=2048"} ENV NODE_ENV=${NODE_ENV:-production} ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4203} ENV SENTRY_DSN=${SENTRY_DSN} ENV CHATWOOT_SDK_TOKEN=${CHATWOOT_SDK_TOKEN} ENV CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME} ENV CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY} ENV GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY} ENV GOOGLE_ANALYTICS_API_KEY=${GOOGLE_ANALYTICS_API_KEY} ENV GOOGLE_PLACE_AUTOCOMPLETE=${GOOGLE_PLACE_AUTOCOMPLETE:-false} ENV DEFAULT_LATITUDE=${DEFAULT_LATITUDE:-42.6459136} ENV DEFAULT_LONGITUDE=${DEFAULT_LONGITUDE:-23.3332736} ENV DEFAULT_CURRENCY=${DEFAULT_CURRENCY:-USD}_DSN} ENV DEFAULT_LANGUAGE=${DEFAULT_LANGUAGE:-en} ENV DEFAULT_CUSTOMER_LOGO=${DEFAULT_CUSTOMER_LOGO} ENV LOGIN_LOGO=${LOGIN_LOGO} ENV NO_INTERNET_LOGO=${NO_INTERNET_LOGO} ENV COMPANY_NAME=${COMPANY_NAME} ENV APP_NAME=${APP_NAME} ENV MIXPANEL_API_KEY=${MIXPANEL_API_KEY} ENV DEFAULT_LOGIN_USERNAME=${DEFAULT_LOGIN_USERNAME} ENV DEFAULT_LOGIN_PASSWORD=${DEFAULT_LOGIN_PASSWORD} ENV GQL_ENDPOINT=${GQL_ENDPOINT} ENV GQL_SUBSCRIPTIONS_ENDPOINT=${GQL_SUBSCRIPTIONS_ENDPOINT} ENV SERVICES_ENDPOINT=${SERVICES_ENDPOINT} ENV HTTPS_SERVICES_ENDPOINT=${HTTPS_SERVICES_ENDPOINT} ENV SETTINGS_APP_TYPE=${SETTINGS_APP_TYPE} ENV SETTINGS_MAINTENANCE_API_URL=${SETTINGS_MAINTENANCE_API_URL} ENV DEMO=${DEMO:-false} ENV IS_DOCKER=true RUN yarn build:carrier FROM node:16-alpine3.11 AS production # USER nginx:nginx WORKDIR /srv/ever COPY --chown=nginx:nginx --from=dependencies /wait /entrypoint.prod.sh /entrypoint.compose.sh ./ COPY --chown=nginx:nginx .deploy/carrier-mobile-ionic/nginx.compose.conf /etc/nginx/conf.d/compose.conf.template COPY --chown=nginx:nginx .deploy/carrier-mobile-ionic/nginx.prod.conf /etc/nginx/conf.d/prod.conf.template COPY --chown=nginx:nginx --from=build /srv/ever/packages/carrier-mobile-ionic/www . RUN chmod +x wait entrypoint.compose.sh entrypoint.prod.sh && \ chmod a+rw /etc/nginx/conf.d/compose.conf.template /etc/nginx/conf.d/prod.conf.template ENV API_BASE_URL=${API_BASE_URL:-http://localhost:3000} ENV CLIENT_BASE_URL=${CLIENT_BASE_URL:-http://localhost:4203} ENV SENTRY_DSN=${SENTRY_DSN} ENV API_HOST=${API_HOST:-api} ENV API_PORT=${API_PORT:-3000} ENV WEB_HOST=${WEB_HOST:-0.0.0.0} ENV WEB_PORT=${WEB_PORT:-4203} ENV DEMO=${DEMO:-false} EXPOSE ${WEB_PORT} ENTRYPOINT [ "./entrypoint.prod.sh" ] CMD [ "nginx", "-g", "daemon off;" ]
.deploy/carrier-mobile-ionic/entrypoint.compose.sh 0 → 100644 +27 −0 Original line number Diff line number Diff line #!/bin/sh set -ex # This Entrypoint used inside Docker Compose only export WAIT_HOSTS=$API_HOST:$API_PORT # In production we should replace some values in generated JS code sed -i "s#DOCKER_API_BASE_URL#$API_BASE_URL#g" *.js sed -i "s#DOCKER_CLIENT_BASE_URL#$CLIENT_BASE_URL#g" *.js sed -i "s#DOCKER_SENTRY_DSN#$SENTRY_DSN#g" *.js sed -i "s#DOCKER_CLOUDINARY_CLOUD_NAME#$CLOUDINARY_CLOUD_NAME#g" *.js sed -i "s#DOCKER_CLOUDINARY_API_KEY#$CLOUDINARY_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_MAPS_API_KEY#$GOOGLE_MAPS_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_PLACE_AUTOCOMPLETE#$GOOGLE_PLACE_AUTOCOMPLETE#g" *.js sed -i "s#DOCKER_DEFAULT_LATITUDE#$DEFAULT_LATITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_LONGITUDE#$DEFAULT_LONGITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_CURRENCY#$DEFAULT_CURRENCY#g" *.js sed -i "s#DOCKER_CHATWOOT_SDK_TOKEN#$CHATWOOT_SDK_TOKEN#g" *.js sed -i "s#DOCKER_DEMO#$DEMO#g" *.js envsubst '${API_HOST} ${API_PORT}' < /etc/nginx/conf.d/compose.conf.template > /etc/nginx/nginx.conf # in Docker Compose we should wait other services start ./wait exec "$@" No newline at end of file
.deploy/carrier-mobile-ionic/entrypoint.prod.sh 0 → 100644 +24 −0 Original line number Diff line number Diff line #!/bin/sh set -ex # This Entrypoint used when we run Docker container outside of Docker Compose (e.g. in k8s) # In production we should replace some values in generated JS code sed -i "s#DOCKER_API_BASE_URL#$API_BASE_URL#g" *.js sed -i "s#DOCKER_CLIENT_BASE_URL#$CLIENT_BASE_URL#g" *.js sed -i "s#DOCKER_SENTRY_DSN#$SENTRY_DSN#g" *.js sed -i "s#DOCKER_CLOUDINARY_CLOUD_NAME#$CLOUDINARY_CLOUD_NAME#g" *.js sed -i "s#DOCKER_CLOUDINARY_API_KEY#$CLOUDINARY_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_MAPS_API_KEY#$GOOGLE_MAPS_API_KEY#g" *.js sed -i "s#DOCKER_GOOGLE_PLACE_AUTOCOMPLETE#$GOOGLE_PLACE_AUTOCOMPLETE#g" *.js sed -i "s#DOCKER_DEFAULT_LATITUDE#$DEFAULT_LATITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_LONGITUDE#$DEFAULT_LONGITUDE#g" *.js sed -i "s#DOCKER_DEFAULT_CURRENCY#$DEFAULT_CURRENCY#g" *.js sed -i "s#DOCKER_CHATWOOT_SDK_TOKEN#$CHATWOOT_SDK_TOKEN#g" *.js sed -i "s#DOCKER_DEMO#$DEMO#g" *.js # We may not need to use that env vars now in nginx.config, but we may want later. # Also we just need to copy nginx.conf to correct place anyway... envsubst '' < /etc/nginx/conf.d/prod.conf.template > /etc/nginx/nginx.conf exec "$@"