diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 77803ea..6bdc7d7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,12 +12,13 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Create env file in /server - run: | - mkdir -p server - touch server/.env - echo DATABASE_URI=${{ vars.DATABASE_URI }} >> server/.env - cat server/.env # Verify the file is created - - name: Build Docker image - run: docker build -t my-app:latest -t my-app:${{ github.sha }} -f server/Dockerfile server + run: docker build -t nettleship-net-api:latest -f server/Dockerfile server + + - name: Deploy to Docker Swarm + run: | + # Make sure Docker is available and the image is built + docker pull nettleship-net-api:latest # (if needed, to ensure the latest is on the Pi) + + # Deploy to Swarm + docker stack deploy -c docker-compose.yml nettleship-net-api diff --git a/server/compose.yaml b/server/compose.yaml index 7e76843..62174c4 100644 --- a/server/compose.yaml +++ b/server/compose.yaml @@ -1,51 +1,16 @@ -# Comments are provided throughout this file to help you get started. -# If you need more help, visit the Docker Compose reference guide at -# https://docs.docker.com/go/compose-spec-reference/ +version: "3.9" -# Here the instructions define your application as a service called "server". -# This service is built from the Dockerfile in the current directory. -# You can add other services your application may depend on here, such as a -# database or a cache. For examples, see the Awesome Compose repository: -# https://github.com/docker/awesome-compose services: - server: - build: - context: . - environment: - NODE_ENV: production + nettleship-net-api: + image: nettleship-net-api:latest + deploy: + replicas: 1 + restart_policy: + condition: none + placement: + constraints: + - node.role == manager # This ensures the service runs only on the manager node (pi-1) ports: - - 8000:8000 - -# The commented out section below is an example of how to define a PostgreSQL -# database that your application can use. `depends_on` tells Docker Compose to -# start the database before your application. The `db-data` volume persists the -# database data between container restarts. The `db-password` secret is used -# to set the database password. You must create `db/password.txt` and add -# a password of your choosing to it before running `docker-compose up`. -# depends_on: -# db: -# condition: service_healthy -# db: -# image: postgres -# restart: always -# user: postgres -# secrets: -# - db-password -# volumes: -# - db-data:/var/lib/postgresql/data -# environment: -# - POSTGRES_DB=example -# - POSTGRES_PASSWORD_FILE=/run/secrets/db-password -# expose: -# - 5432 -# healthcheck: -# test: [ "CMD", "pg_isready" ] -# interval: 10s -# timeout: 5s -# retries: 5 -# volumes: -# db-data: -# secrets: -# db-password: -# file: db/password.txt - + - "3000:3000" + volumes: + - ./logs:/usr/src/app/logs