update Dockerfile and github workflows

This commit is contained in:
2026-01-27 19:44:13 +03:00
parent f87fae8ef1
commit e67eaa1966
3 changed files with 70 additions and 13 deletions
+54
View File
@@ -0,0 +1,54 @@
name: Docker (Bun)
on:
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_OWNER: ${{ github.repository_owner }}
IMAGE_NAME: tg-chat-bot
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable=${{ github.ref_name == 'master' }}
type=ref,event=branch
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v5
with:
context: .
file: Dockerfile-bun
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+1 -1
View File
@@ -46,7 +46,7 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
file: Dockerfile-bun
file: Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+14 -11
View File
@@ -1,25 +1,28 @@
# ---- build ----
FROM node:22-alpine AS builder
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --no-audit --no-fund
COPY package.json package-lock.json tsconfig*.json ./
RUN npm ci
COPY . .
RUN npm run build
COPY src ./src
COPY assets ./assets
# only prod dependencies
RUN npm prune --omit=dev
RUN npx tsc -p tsconfig.build.json
# ---- runtime ----
FROM node:22-alpine AS runner
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV IS_DOCKER=true
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY package.json package-lock.json ./
RUN npm ci --omit=dev && npm cache clean --force
USER node
COPY --from=builder --chown=node:node /app/dist ./dist
COPY --from=builder --chown=node:node /app/assets ./assets
CMD ["node", "dist/index.js"]