49 lines
1.5 KiB
Bash
Executable File
49 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
# Check if Docker daemon is running
|
|
if ! docker info >/dev/null 2>&1; then
|
|
echo "Error: Docker daemon is not running"
|
|
exit 1
|
|
fi
|
|
|
|
IMAGE_NAME="markdownblog"
|
|
CONTAINER_NAME="markdownblog"
|
|
VOLUME_NAME="markdownblog-posts"
|
|
PORT="8080"
|
|
|
|
# Stop and remove any containers using the volume
|
|
VOLUME_CONTAINERS=$(docker ps -a --filter volume=$VOLUME_NAME -q)
|
|
if [ -n "$VOLUME_CONTAINERS" ]; then
|
|
echo "Stopping and removing containers using the volume..."
|
|
docker rm -f $VOLUME_CONTAINERS
|
|
fi
|
|
|
|
# Remove the volume for a clean start (optional, comment out if you want to keep posts)
|
|
echo "Removing Docker volume (for a clean start)..."
|
|
docker volume rm $VOLUME_NAME 2>/dev/null || true
|
|
|
|
echo "Building Docker image..."
|
|
docker build -t $IMAGE_NAME .
|
|
|
|
echo "Running new container with persistent volume..."
|
|
docker run -d \
|
|
--name $CONTAINER_NAME \
|
|
-p $PORT:3000 \
|
|
-v $VOLUME_NAME:/app/docker \
|
|
$IMAGE_NAME
|
|
|
|
# Copy built-in posts to the volume if it's empty (one-time init)
|
|
echo "Copying built-in posts to Docker volume if empty..."
|
|
docker exec $CONTAINER_NAME sh -c 'if [ -d /app/posts ] && [ -d /app/docker ] && [ "$(ls -A /app/docker)" = "" ]; then cp -r /app/posts/* /app/docker/; fi'
|
|
|
|
# Check if container is running
|
|
if ! docker ps | grep -q $CONTAINER_NAME; then
|
|
echo "Error: Container failed to start. Check logs with: docker logs $CONTAINER_NAME"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deployment complete!"
|
|
echo "App should be available at http://localhost:$PORT"
|