2023-05-16 14:30:24 -04:00
|
|
|
# Base node image
|
|
|
|
|
FROM node:19-alpine AS base
|
|
|
|
|
WORKDIR /api
|
|
|
|
|
COPY /api/package*.json /api/
|
2023-03-21 12:40:37 +09:00
|
|
|
WORKDIR /client
|
|
|
|
|
COPY /client/package*.json /client/
|
2023-05-16 14:30:24 -04:00
|
|
|
WORKDIR /
|
|
|
|
|
COPY /package*.json /
|
2023-03-21 12:40:37 +09:00
|
|
|
RUN npm ci
|
2023-05-16 14:30:24 -04:00
|
|
|
|
|
|
|
|
# React client build
|
|
|
|
|
FROM base AS react-client
|
|
|
|
|
WORKDIR /client
|
2023-03-21 12:40:37 +09:00
|
|
|
COPY /client/ /client/
|
2023-04-09 07:35:10 -04:00
|
|
|
ENV NODE_OPTIONS="--max-old-space-size=2048"
|
2023-03-21 12:40:37 +09:00
|
|
|
RUN npm run build
|
|
|
|
|
|
2023-05-16 14:30:24 -04:00
|
|
|
# Node API setup
|
|
|
|
|
FROM base AS node-api
|
2023-03-21 12:40:37 +09:00
|
|
|
WORKDIR /api
|
|
|
|
|
COPY /api/ /api/
|
2023-04-02 00:00:49 -04:00
|
|
|
COPY --from=react-client /client/dist /client/dist
|
2023-03-21 12:40:37 +09:00
|
|
|
EXPOSE 3080
|
|
|
|
|
ENV HOST=0.0.0.0
|
|
|
|
|
CMD ["npm", "start"]
|
2023-03-22 22:59:29 +09:00
|
|
|
|
|
|
|
|
# Optional: for client with nginx routing
|
|
|
|
|
FROM nginx:stable-alpine AS nginx-client
|
|
|
|
|
WORKDIR /usr/share/nginx/html
|
2023-04-10 14:46:25 +08:00
|
|
|
COPY --from=react-client /client/dist /usr/share/nginx/html
|
2023-05-16 14:30:24 -04:00
|
|
|
COPY client/nginx.conf /etc/nginx/conf.d/default.conf
|
2023-03-22 22:59:29 +09:00
|
|
|
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|