From e37f71bf2fd5a930012a9bc74b512183b9092025 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Thu, 24 Aug 2023 17:14:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B0=D0=B2=D1=82=D0=BE=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/gitea-push-docker.yml | 59 ++++++++++++++++++++++++++ Dockerfile | 17 ++++++++ README.md | 23 ++++++++++ nginx.conf | 9 ++++ 4 files changed, 108 insertions(+) create mode 100644 .gitea/workflows/gitea-push-docker.yml create mode 100644 Dockerfile create mode 100644 nginx.conf diff --git a/.gitea/workflows/gitea-push-docker.yml b/.gitea/workflows/gitea-push-docker.yml new file mode 100644 index 0000000..b4df3cc --- /dev/null +++ b/.gitea/workflows/gitea-push-docker.yml @@ -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: + # + 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 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4b25ceb --- /dev/null +++ b/Dockerfile @@ -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;"] \ No newline at end of file diff --git a/README.md b/README.md index 9f42b3a..18eb1a3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,25 @@ # 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' +``` \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..ba0260c --- /dev/null +++ b/nginx.conf @@ -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; + } +} \ No newline at end of file