This commit is contained in:
parent
f39a0be9f0
commit
0164870be5
3 changed files with 72 additions and 8239 deletions
42
.forgejo/workflows/build.yml
Normal file
42
.forgejo/workflows/build.yml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
name: Build and Publish Docker Image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ghcr.io/${{ github.repository }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=sha
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
30
Dockerfile
Normal file
30
Dockerfile
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
ARG NODE_IMAGE=node:22-slim
|
||||
|
||||
###### First Stage - Creating base ######
|
||||
FROM $NODE_IMAGE as base
|
||||
RUN mkdir -p /home/node/app && chown node:node /home/node/app
|
||||
RUN npm install --global pnpm
|
||||
WORKDIR /home/node/app
|
||||
USER node
|
||||
RUN mkdir tmp
|
||||
|
||||
###### Second Stage - Installing dependencies ######
|
||||
FROM base AS dependencies
|
||||
COPY --chown=node:node ./package*.json ./
|
||||
RUN pnpm install
|
||||
COPY --chown=node:node . .
|
||||
|
||||
###### Third Stage - Building Stage ######
|
||||
FROM dependencies AS build
|
||||
RUN node ace build
|
||||
|
||||
###### Final Stage - Production ######
|
||||
FROM base as production
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=3333
|
||||
ENV HOST=0.0.0.0
|
||||
COPY --chown=node:node ./package.json ./
|
||||
COPY --chown=node:node ./pnpm-lock.yaml ./
|
||||
RUN pnpm install --prod
|
||||
COPY --chown=node:node --from=build /home/node/app/build .
|
||||
EXPOSE 3333
|
||||
8239
package-lock.json
generated
8239
package-lock.json
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue