Files
portfolio/Dockerfile
Ahmed Al-Taiar 47777acd74
All checks were successful
Publish Docker Image / Publish Docker Image (push) Successful in 4s
Docker tweaks and PDF width fix
2025-05-06 18:07:52 -04:00

155 lines
3.5 KiB
Docker
Executable File

FROM node:lts-alpine AS base
ARG APP_VERSION=dev
ENV APP_VERSION=${APP_VERSION}
RUN apk add --no-cache openssl && corepack enable
USER node
WORKDIR /home/node/app
COPY --chown=node:node .yarnrc.yml .
COPY --chown=node:node package.json .
COPY --chown=node:node api/package.json api/
COPY --chown=node:node web/package.json web/
COPY --chown=node:node yarn.lock .
RUN mkdir -p /home/node/.yarn/berry/index
RUN mkdir -p /home/node/.cache
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
--mount=type=cache,target=/home/node/.cache,uid=1000 \
CI=1 yarn install
COPY --chown=node:node redwood.toml .
COPY --chown=node:node graphql.config.js .
FROM base AS api_build
ARG ADDRESS_PROD
ARG ADDRESS_DEV
ARG DOMAIN
ARG API_DOMAIN
ARG MAX_HTTP_CONNECTIONS_PER_MINUTE
ARG SMTP_HOST
ARG SMTP_PORT
ARG SMTP_SECURE
ARG SMTP_USER
ARG SMTP_PASSWORD
ARG EMAIL_FROM
ARG EMAIL_TO
ARG FIRST_NAME
ARG LAST_NAME
ARG APP_VERSION
COPY --chown=node:node api api
RUN yarn rw build api
FROM api_build AS web_build_with_prerender
ARG FIRST_NAME
ARG LAST_NAME
ARG COUNTRY
ARG STATE
ARG CITY
ARG DEFAULT_THEME
ARG API_ADDRESS_PROD
ARG API_ADDRESS_DEV
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION}
COPY --chown=node:node web web
RUN yarn rw build web
FROM base AS web_build
ARG FIRST_NAME
ARG LAST_NAME
ARG COUNTRY
ARG STATE
ARG CITY
ARG DEFAULT_THEME
ARG API_ADDRESS_PROD
ARG API_ADDRESS_DEV
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION}
COPY --chown=node:node web web
RUN yarn rw build web --no-prerender
FROM node:lts-alpine AS api_serve
RUN apk add --no-cache openssl && corepack enable
RUN mkdir -p /home/node/app/api/files_prod \
&& chown -R node:node /home/node/app/api/files_prod
USER node
WORKDIR /home/node/app
COPY --chown=node:node .yarnrc.yml .
COPY --chown=node:node package.json .
COPY --chown=node:node api/package.json api/
COPY --chown=node:node yarn.lock .
RUN mkdir -p /home/node/.yarn/berry/index
RUN mkdir -p /home/node/.cache
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
--mount=type=cache,target=/home/node/.cache,uid=1000 \
CI=1 yarn workspaces focus api --production
COPY --chown=node:node redwood.toml .
COPY --chown=node:node graphql.config.js .
COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist
COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db
COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma
ARG APP_VERSION
ENV NODE_ENV=production
ENV APP_VERSION=${APP_VERSION}
CMD [ "./api/dist/server.js" ]
FROM node:lts-alpine AS web_serve
RUN corepack enable
USER node
WORKDIR /home/node/app
COPY --chown=node:node .yarnrc.yml .
COPY --chown=node:node package.json .
COPY --chown=node:node web/package.json web/
COPY --chown=node:node yarn.lock .
RUN mkdir -p /home/node/.yarn/berry/index
RUN mkdir -p /home/node/.cache
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \
--mount=type=cache,target=/home/node/.cache,uid=1000 \
CI=1 yarn workspaces focus web --production
COPY --chown=node:node redwood.toml .
COPY --chown=node:node graphql.config.js .
COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION}
ENV NODE_ENV=production \
API_PROXY_TARGET=http://api:8911
CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET"
FROM base AS console
COPY --chown=node:node api api
COPY --chown=node:node web web
COPY --chown=node:node scripts scripts