Merge branch 'main' of https://git.zetcraft.ru/FichaHackaton/FichaFrontend
All checks were successful
Create and publish a Docker image / Publish image (push) Successful in 46s
Create and publish a Docker image / Deploy image (push) Successful in 3s

This commit is contained in:
VITALY-VORON 2023-08-24 18:02:03 +03:00
commit 8619ef2755
4 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,59 @@
name: Create and publish a Docker image
on:
push:
branches: ["main"]
env:
REGISTRY: git.zetcraft.ru
jobs:
publish:
runs-on: ubuntu-latest
name: Publish image
container: catthehacker/ubuntu:act-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ gitea.actor }}
password: ${{ secrets.TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: https://github.com/docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ gitea.repository }}
- name: Build and push Docker image
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
deploy:
needs: publish
name: Deploy image
runs-on: ubuntu-latest
steps:
- name: install ssh keys
# check this thread to understand why its needed:
# <https://stackoverflow.com/a/70447517>
run: |
install -m 600 -D /dev/null ~/.ssh/id_rsa
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
- name: connect and pull
run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ secrets.WORK_DIR }} && docker compose pull && docker compose up -d && docker image prune && exit"
- name: cleanup
run: rm -rf ~/.ssh

17
Dockerfile Normal file
View File

@ -0,0 +1,17 @@
FROM node:20-alpine3.17 AS builder
WORKDIR /app
COPY package.json package-lock.json ./
COPY public/ public/
COPY src/ src/
RUN npm ci
RUN npm run build
FROM nginx:1.25.2-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build /usr/share/nginx/html
RUN touch /var/run/nginx.pid
RUN chown -R nginx:nginx /var/run/nginx.pid /usr/share/nginx/html /var/cache/nginx /var/log/nginx /etc/nginx/conf.d
USER nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

View File

@ -1,2 +1,25 @@
# FichaFrontend # FichaFrontend
# Docker
```bash
docker run -d -p 85:80 \
--name FichaFrontend \
--restart=always \
-e TZ=Europe/Moscow \
git.zetcraft.ru/fichahackaton/fichafrontend:main
```
# Docker Compose
```yml
services:
sistemafrontend:
ports:
- '85:80'
container_name: FichaFrontend
restart: always
environment:
- TZ=Europe/Moscow
image: 'git.zetcraft.ru/fichahackaton/fichafrontend:main'
```

9
nginx.conf Normal file
View File

@ -0,0 +1,9 @@
server_tokens off;
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
}