When article was loaded once than it will be cached in redux store. On the next loading of article content it will be get from store
43 lines
1.1 KiB
Docker
Executable File
43 lines
1.1 KiB
Docker
Executable File
# Install dependencies of project
|
|
FROM node:fermium-alpine AS dependencies
|
|
RUN apk add --no-cache libc6-compat
|
|
WORKDIR /home/app/
|
|
COPY package.json ./
|
|
RUN npm i
|
|
|
|
|
|
# Build application to bunch of static files
|
|
FROM node:fermium-alpine AS builder
|
|
WORKDIR /home/app/
|
|
COPY --from=dependencies ./home/app/node_modules ./node_modules
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
|
|
# NGINX image
|
|
FROM nginx:1.21.6 as production
|
|
# Copy built assets from builder
|
|
COPY --from=builder /home/app/build /usr/share/nginx/html
|
|
# Add nginx.config
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
# Copy setup nginx entrypoint file
|
|
COPY ./scripts/entrypoint.sh .
|
|
|
|
# Expose ports
|
|
EXPOSE 80
|
|
|
|
# Execute script
|
|
RUN chmod +x ./entrypoint.sh
|
|
|
|
ENV NODE_ENV production
|
|
# ENV USER_NAME=node_user USER_UID=2000 GROUP_NAME=node_group GROUP_UID=2000
|
|
|
|
# RUN deluser --remove-home node \
|
|
# && addgroup --g ${GROUP_UID} -S ${GROUP_NAME} \
|
|
# && adduser -D -S -s /sbin/nologin -u ${USER_UID} -G ${GROUP_NAME} ${USER_NAME}
|
|
# USER "${USER_NAME}"
|
|
|
|
ENTRYPOINT ["./entrypoint.sh"]
|
|
|
|
# Start serving
|
|
CMD ["nginx", "-g", "daemon off;"] |