mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-01-20 20:01:25 +00:00
- Add the maintenance page in webapp for testing, because it is kind of not possible to develop it with docker, because of leak of automatic recompiling.
86 lines
3.2 KiB
Docker
86 lines
3.2 KiB
Docker
##################################################################################
|
|
# BASE ###########################################################################
|
|
##################################################################################
|
|
FROM node:12.19.0-alpine3.10 as base
|
|
|
|
# ENVs
|
|
## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame
|
|
ENV DOCKER_WORKDIR="/app"
|
|
## We Cannot do `$(date -u +'%Y-%m-%dT%H:%M:%SZ')` here so we use unix timestamp=0
|
|
ARG BBUILD_DATE="1970-01-01T00:00:00.00Z"
|
|
ENV BUILD_DATE=$BBUILD_DATE
|
|
## We cannot do $(yarn run version)-${BUILD_NUMBER} here so we default to 0.0.0-0
|
|
ARG BBUILD_VERSION="0.0.0-0"
|
|
ENV BUILD_VERSION=$BBUILD_VERSION
|
|
## We cannot do `$(git rev-parse --short HEAD)` here so we default to 0000000
|
|
ARG BBUILD_COMMIT="0000000"
|
|
ENV BUILD_COMMIT=$BBUILD_COMMIT
|
|
## SET NODE_ENV
|
|
ENV NODE_ENV="production"
|
|
## App relevant Envs
|
|
ENV PORT="3000"
|
|
|
|
# Labels
|
|
LABEL org.label-schema.build-date="${BUILD_DATE}"
|
|
LABEL org.label-schema.name="ocelot.social:backend"
|
|
LABEL org.label-schema.description="Maintenance page of the Social Network Software ocelot.social"
|
|
LABEL org.label-schema.usage="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/README.md"
|
|
LABEL org.label-schema.url="https://ocelot.social"
|
|
LABEL org.label-schema.vcs-url="https://github.com/Ocelot-Social-Community/Ocelot-Social/tree/master/backend"
|
|
LABEL org.label-schema.vcs-ref="${BUILD_COMMIT}"
|
|
LABEL org.label-schema.vendor="ocelot.social Community"
|
|
LABEL org.label-schema.version="${BUILD_VERSION}"
|
|
LABEL org.label-schema.schema-version="1.0"
|
|
LABEL maintainer="devops@ocelot.social"
|
|
|
|
# Install Additional Software
|
|
## install: git
|
|
RUN apk --no-cache add git
|
|
|
|
# Settings
|
|
## Expose Container Port
|
|
EXPOSE ${PORT}
|
|
|
|
## Workdir
|
|
RUN mkdir -p ${DOCKER_WORKDIR}
|
|
WORKDIR ${DOCKER_WORKDIR}
|
|
|
|
CMD ["yarn", "run", "start"]
|
|
|
|
##################################################################################
|
|
# BUILD ### TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO ##
|
|
##################################################################################
|
|
FROM base as build
|
|
|
|
COPY package.json yarn.lock ./
|
|
RUN yarn install --production=false --frozen-lockfile --non-interactive
|
|
|
|
COPY assets assets
|
|
COPY components/_new/features/Maintenance/ components/_new/features/Maintenance
|
|
COPY components/Dropdown.vue components/Dropdown.vue
|
|
COPY components/LocaleSwitch/ components/LocaleSwitch
|
|
COPY components/Logo/ components/Logo
|
|
COPY layouts/blank.vue layouts/blank.vue
|
|
COPY locales locales
|
|
COPY mixins mixins
|
|
COPY plugins/i18n.js plugins/v-tooltip.js plugins/styleguide.js plugins/
|
|
COPY static static
|
|
COPY constants constants
|
|
COPY nuxt.config.js nuxt.config.js
|
|
COPY config/ config/
|
|
|
|
# this will also ovewrite the existing package.json
|
|
COPY maintenance/source ./
|
|
|
|
|
|
RUN yarn run generate
|
|
|
|
##################################################################################
|
|
# PRODUCTION ### TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO ####
|
|
##################################################################################
|
|
FROM nginx:alpine as production
|
|
|
|
COPY --from=build ./app/dist/ /usr/share/nginx/html/
|
|
RUN rm /etc/nginx/conf.d/default.conf
|
|
COPY maintenance/nginx/custom.conf /etc/nginx/conf.d/
|