From c7df4d248feca09f0b2b523e1b38d114dcb2f8d7 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Sun, 24 Dec 2023 13:27:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20CI?= =?UTF-8?q?/CD?= 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 | 27 +++++++++--- nginx.conf | 9 ++++ 4 files changed, 107 insertions(+), 5 deletions(-) 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..23b7121 --- /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 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f537aba --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM node:20-alpine3.17 AS builder + +WORKDIR /app +COPY package.json package-lock.json .eslintrc.cjs vite.config.js index.html ./ +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 f768e33..e635fc5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,25 @@ -# React + Vite +# CyberBloomFrontend -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +# Docker -Currently, two official plugins are available: +```bash +docker run -d -p 80:80 \ +--name CyberBloom \ +--restart=always \ +-e TZ=Europe/Moscow \ +git.zetcraft.ru/cyberbloom/ogeetocasecybergarden:main +``` -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +# Docker Compose + +```yml +services: + cyberbloomfrontend: + ports: + - '80:80' + container_name: CyberBloom + restart: always + environment: + - TZ=Europe/Moscow + image: 'git.zetcraft.ru/cyberbloom/ogeetocasecybergarden: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