From ff5969c6af3a1d1f9cce02914f2dba0d5e235cf3 Mon Sep 17 00:00:00 2001 From: irumaru Date: Mon, 30 Oct 2023 04:48:27 +0000 Subject: [PATCH] =?UTF-8?q?production=20deploy=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/Astro-deploy-Production.yaml | 49 +++++++++++++++++++ container/Dockerfile | 11 +++++ container/nginx.conf | 31 ++++++++++++ deploy/syncing/deployment.yaml | 17 +++++++ 4 files changed, 108 insertions(+) create mode 100644 .github/workflows/Astro-deploy-Production.yaml create mode 100644 container/Dockerfile create mode 100644 container/nginx.conf create mode 100644 deploy/syncing/deployment.yaml diff --git a/.github/workflows/Astro-deploy-Production.yaml b/.github/workflows/Astro-deploy-Production.yaml new file mode 100644 index 0000000..cc479a6 --- /dev/null +++ b/.github/workflows/Astro-deploy-Production.yaml @@ -0,0 +1,49 @@ +name: Deploy to Production + +on: + push: + branches: + - "main" + workflow_dispatch: + +env: + SITE: https://numasai2023.mikusorigin.com/ + +jobs: + build: + runs-on: ubuntu-latest + env: + IMAGE: "ghcr.io/cit-nclab/mo12-hp:${{ github.sha }}" + # このリポジトリに対する書き込み権限を付与 + permissions: + contents: write + packages: write + steps: + - + name: Checkout + uses: actions/checkout@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: ./container/Dockerfile + push: true + tags: ${{ env.IMAGE }} + - + name: chage docker image + uses: mikefarah/yq@master + with: + cmd: yq '.spec.template.spec.containers[0].image = env(IMAGE)' -i ${{ env.WORK_DIR }}deploy/syncing/deployment.yaml + - + name: commit + uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/container/Dockerfile b/container/Dockerfile new file mode 100644 index 0000000..0767690 --- /dev/null +++ b/container/Dockerfile @@ -0,0 +1,11 @@ +FROM node:lts AS build +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM nginx:alpine AS runtime +COPY ./container/nginx.conf /etc/nginx/nginx.conf +COPY --from=build /app/dist /usr/share/nginx/html +EXPOSE 80 diff --git a/container/nginx.conf b/container/nginx.conf new file mode 100644 index 0000000..27ba6ea --- /dev/null +++ b/container/nginx.conf @@ -0,0 +1,31 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html index.htm; + include /etc/nginx/mime.types; + + gzip on; + gzip_min_length 1000; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + internal; + } + + location / { + try_files $uri $uri/index.html =404; + } + } +} diff --git a/deploy/syncing/deployment.yaml b/deploy/syncing/deployment.yaml new file mode 100644 index 0000000..fe67926 --- /dev/null +++ b/deploy/syncing/deployment.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: web +spec: + replicas: 1 + selector: + matchLabels: + app: web + template: + metadata: + labels: + app: web + spec: + containers: + - name: web + image: ""