From 404b1adc3387f29f517021a2a87a7fef6061bc33 Mon Sep 17 00:00:00 2001 From: Ben Binder Date: Sat, 8 Mar 2025 09:42:49 -0600 Subject: [PATCH] Update dev deployment strategy. --- .woodpecker.yml | 6 +++--- docker/Dockerfile | 2 +- readme.md | 19 +++++++++++++++++++ scripts/dev.sh | 32 +++++++++++++++++++++++++------- scripts/startup.sh | 2 +- 5 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 readme.md diff --git a/.woodpecker.yml b/.woodpecker.yml index 69741bc..e559f55 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -36,8 +36,8 @@ steps: script: - echo "$REGISTRY_PASSWORD" | docker login registry.binderlab.io --username "$REGISTRY_USERNAME" --password-stdin - docker pull registry.binderlab.io/harbormaster-server:latest - - docker stop harbormaster || true - - docker rm harbormaster || true - - docker run -d --name harbormaster -p 7080:8080 -e RESET_DB $RESET_DB registry.binderlab.io/harbormaster:latest + - docker stop harbormaster-server || true + - docker rm harbormaster-server || true + - docker run -d --name harbormaster-server -p 7080:8080 -e RESET_DB $RESET_DB registry.binderlab.io/harbormaster-server:latest when: event: manual \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index a2074cb..7535383 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -28,7 +28,7 @@ WORKDIR /root COPY --from=builder /root/harbormaster . #COPY database/gold.db /root/database/gold.db #COPY migrations /root/migrations -COPY ../scripts/ /root/scripts/ +COPY ../scripts/ ./scripts/ RUN chmod +x /root/scripts/startup.sh # Expose the port the app runs on diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..2265497 --- /dev/null +++ b/readme.md @@ -0,0 +1,19 @@ +# Harbormaster Server + +## Deployment notes: +### Development: +- Use `scripts/dev.sh`. +- Stops and removes old versions if they exist. +- Builds the image. +- Runs the image in detached mode. +- Tails the container logs on the console. + +NOTE: `docker-compose.dev.yml` is not used, kept around for now in case it's useful when setting up the front end. + +### Production: +- Use `ci.binderlab.io` (Woodpecker). +- Builds the image. +- Pushes the new image to the registry at `registry.binderlab.io`. +- Pulls down the new image. +- Stops and removes old versions of the app. +- Runs the pulled image in detached mode. \ No newline at end of file diff --git a/scripts/dev.sh b/scripts/dev.sh index 4973adc..b67dbcd 100755 --- a/scripts/dev.sh +++ b/scripts/dev.sh @@ -1,12 +1,30 @@ #!/bin/bash -# cleanup() { -# echo "Stopping Docker containers..." -# docker-compose down -# } +cleanup() { + echo "Stopping Docker containers..." + docker stop harbormaster-server + docker rm harbormaster-server + echo "Done!" +} -# trap cleanup EXIT SIGINT SIGTERM +trap cleanup SIGINT SIGTERM cd ../ -echo "Starting application..." -docker compose -p harbormaster-server -f docker/docker-compose.dev.yml up -d --build +if [ "$(docker ps -a | grep harbormaster-server)" ]; then + echo "Removing existing harbormaster-server container..." + docker stop harbormaster-server + docker rm harbormaster-server +fi +# if [ "$RESET_DB" == "true" ]; then +# echo "Resetting database from gold..." +# cp database/gold.db database/app.db +# elif [ ! -f database/app.db ]; then +# echo "Creating database from gold..." +# cp database/gold.db database/app.db +# else +# echo "Using existing database..." +# fi +echo "Building harbormaster-server image..." +docker build -t harbormaster-server -f docker/Dockerfile . +echo "Starting containers..." +docker run -d --name harbormaster-server -p 7080:8080 harbormaster-server echo "Tailing logs..." docker logs harbormaster-server -f \ No newline at end of file diff --git a/scripts/startup.sh b/scripts/startup.sh index b0a7ed7..7c65abc 100755 --- a/scripts/startup.sh +++ b/scripts/startup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/ash cd /root echo "Starting application..."