Image autobuild (#1)
All checks were successful
release-tag / release-image (push) Successful in 44s

Reviewed-on: #1
Co-authored-by: Alexander Lazarenko <kerblif@unprism.ru>
Co-committed-by: Alexander Lazarenko <kerblif@unprism.ru>
This commit is contained in:
parent 295ed58901
commit b9ab746cfd
4 changed files with 114 additions and 0 deletions

8
.dockerignore Normal file
View File

@ -0,0 +1,8 @@
node_modules
.git
.gitignore
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.md
dist

View File

@ -0,0 +1,51 @@
name: release-tag
on:
push
jobs:
release-image:
runs-on: ubuntu-latest
container:
image: catthehacker/ubuntu:act-latest
env:
DOCKER_ORG: krbl
DOCKER_LATEST: nightly
RUNNER_TOOL_CACHE: /toolcache
IMAGE_NAME: white-nights-ts
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
with:
config-inline: |
[registry."gitea.unprism.ru"]
- name: Login to DockerHub
uses: docker/login-action@v2
with:
registry: gitea.unprism.ru
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Get Meta
id: meta
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
platforms: |
linux/amd64
push: true
tags: |
gitea.unprism.ru/${{ env.DOCKER_ORG }}/${{ env.IMAGE_NAME }}:${{ env.DOCKER_LATEST }}

21
Dockerfile Normal file
View File

@ -0,0 +1,21 @@
FROM node:lts-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

34
nginx.conf Normal file
View File

@ -0,0 +1,34 @@
server {
listen 80;
server_name localhost; # Замените на ваш домен, если необходимо
# Корневая директория для статических файлов
root /usr/share/nginx/html;
index index.html;
location / {
# Важно для Single Page Applications (SPA) вроде Vue
# Пытается отдать файл по $uri, затем директорию $uri/,
# иначе отдает /index.html (чтобы Vue Router обработал маршрут)
try_files $uri $uri/ /index.html;
}
# Опционально: gzip сжатие для улучшения производительности
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
# Опционально: Заголовки кэширования для статических ассетов
location ~* \.(?:jpg|jpeg|gif|png|ico|css|js|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public";
}
# Опционально: Обработка ошибок (рекомендуется)
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}