deploy: use docker hub
Some checks failed
Build & Deploy Strapi from Docker Hub / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Strapi from Docker Hub / Deploy to VPS (push) Has been cancelled

This commit is contained in:
vchikalkin 2025-06-27 19:11:18 +03:00
parent 3a20dc60b9
commit ed6da539ce
2 changed files with 27 additions and 23 deletions

View File

@ -1,18 +1,34 @@
name: Deploy Strapi to VPS name: Build & Deploy Strapi from Docker Hub
on: on:
push: push:
branches: branches:
- master - master
jobs: jobs:
deploy: build-and-push:
environment: production name: Build and Push to Docker Hub
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Login to Docker Hub
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Build image
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/strapi-app:latest .
- name: Push image to Docker Hub
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/strapi-app:latest
deploy:
name: Deploy to VPS
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Setup SSH key - name: Setup SSH key
run: | run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
@ -20,22 +36,14 @@ jobs:
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.VPS_HOST }} >> ~/.ssh/known_hosts ssh-keyscan -H ${{ secrets.VPS_HOST }} >> ~/.ssh/known_hosts
- name: Sync project to VPS - name: Login and deploy on VPS
run: |
rsync -avz --delete . ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }}:/home/${{ secrets.VPS_USER }}/strapi-app
- name: Deploy on VPS
run: | run: |
ssh ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} " ssh ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} "
cd /home/${{ secrets.VPS_USER }}/strapi-app && \
echo 'APP_KEYS=${{ secrets.APP_KEYS }}' > .env && \ echo 'APP_KEYS=${{ secrets.APP_KEYS }}' > .env && \
echo 'API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}' >> .env && \ echo 'API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}' >> .env && \
echo 'ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET }}' >> .env && \ echo 'ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET }}' >> .env && \
echo 'TRANSFER_TOKEN_SALT=${{ secrets.TRANSFER_TOKEN_SALT }}' >> .env && \ echo 'TRANSFER_TOKEN_SALT=${{ secrets.TRANSFER_TOKEN_SALT }}' >> .env && \
echo 'JWT_SECRET=${{ secrets.JWT_SECRET }}' >> .env && \ echo 'JWT_SECRET=${{ secrets.JWT_SECRET }}' >> .env && \
echo 'DATABASE_CLIENT=postgres' >> .env && \
echo 'DATABASE_HOST=${{ secrets.DATABASE_HOST }}' >> .env && \ echo 'DATABASE_HOST=${{ secrets.DATABASE_HOST }}' >> .env && \
echo 'DATABASE_PORT=${{ secrets.DATABASE_PORT }}' >> .env && \ echo 'DATABASE_PORT=${{ secrets.DATABASE_PORT }}' >> .env && \
echo 'DATABASE_NAME=${{ secrets.DATABASE_NAME }}' >> .env && \ echo 'DATABASE_NAME=${{ secrets.DATABASE_NAME }}' >> .env && \
@ -43,6 +51,8 @@ jobs:
echo 'DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}' >> .env && \ echo 'DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}' >> .env && \
echo 'DATABASE_SSL=false' >> .env && \ echo 'DATABASE_SSL=false' >> .env && \
docker compose down && \ cd ~/strapi-app && \
docker compose up -d --build docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} && \
docker compose pull && \
docker compose up -d
" "

View File

@ -1,29 +1,23 @@
services: services:
strapi: strapi:
build: . image: vchikalkin/zapishis-strapi:latest
ports: ports:
- "1337:1337" - "1337:1337"
environment: environment:
# HOST: ${HOST}
# PORT: ${PORT}
APP_KEYS: ${APP_KEYS} APP_KEYS: ${APP_KEYS}
API_TOKEN_SALT: ${API_TOKEN_SALT} API_TOKEN_SALT: ${API_TOKEN_SALT}
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
TRANSFER_TOKEN_SALT: ${TRANSFER_TOKEN_SALT} TRANSFER_TOKEN_SALT: ${TRANSFER_TOKEN_SALT}
# DATABASE_CLIENT: ${DATABASE_CLIENT} JWT_SECRET: ${JWT_SECRET}
DATABASE_HOST: ${DATABASE_HOST} DATABASE_HOST: ${DATABASE_HOST}
DATABASE_PORT: ${DATABASE_PORT} DATABASE_PORT: ${DATABASE_PORT}
DATABASE_NAME: ${DATABASE_NAME} DATABASE_NAME: ${DATABASE_NAME}
DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_USERNAME: ${DATABASE_USERNAME}
DATABASE_PASSWORD: ${DATABASE_PASSWORD} DATABASE_PASSWORD: ${DATABASE_PASSWORD}
# DATABASE_SSL: ${DATABASE_SSL} DATABASE_SSL: "false"
# DATABASE_FILENAME: ${DATABASE_FILENAME}
JWT_SECRET: ${JWT_SECRET}
networks: networks:
- app - app
networks: networks:
app: app:
external: true external: true