Update
This commit is contained in:
		
							
								
								
									
										70
									
								
								publish-docker.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										70
									
								
								publish-docker.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Publish Docker image to GitHub Container Registry
 | 
				
			||||||
 | 
					# Usage: ./publish-docker.sh [tag] [username]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GITHUB_USERNAME="${2:-anosatsuk124}"
 | 
				
			||||||
 | 
					TAG="${1:-latest}"
 | 
				
			||||||
 | 
					LOCAL_IMAGE="voice-rss-summary:${TAG}"
 | 
				
			||||||
 | 
					GHCR_IMAGE_1="ghcr.io/${GITHUB_USERNAME}/voice-rss-summary:${TAG}"
 | 
				
			||||||
 | 
					GHCR_IMAGE_2="ghcr.io/${GITHUB_USERNAME}/voicersssummary:${TAG}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Publishing Docker image to GitHub Container Registry"
 | 
				
			||||||
 | 
					echo "Local image: ${LOCAL_IMAGE}"
 | 
				
			||||||
 | 
					echo "GHCR images: ${GHCR_IMAGE_1}, ${GHCR_IMAGE_2}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Check if local image exists
 | 
				
			||||||
 | 
					if ! docker image inspect "${LOCAL_IMAGE}" >/dev/null 2>&1; then
 | 
				
			||||||
 | 
						echo "Error: Local Docker image '${LOCAL_IMAGE}' not found"
 | 
				
			||||||
 | 
						echo "Build it first with: ./build-docker-image.sh ${TAG}"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Check if user is logged in to GHCR
 | 
				
			||||||
 | 
					if ! docker system info | grep -q "ghcr.io"; then
 | 
				
			||||||
 | 
						echo "Checking GHCR authentication..."
 | 
				
			||||||
 | 
						if ! echo "test" | docker login ghcr.io --username "${GITHUB_USERNAME}" --password-stdin >/dev/null 2>&1; then
 | 
				
			||||||
 | 
							echo "Please authenticate with GitHub Container Registry first:"
 | 
				
			||||||
 | 
							echo "1. Create a personal access token with 'write:packages' scope at:"
 | 
				
			||||||
 | 
							echo "   https://github.com/settings/tokens"
 | 
				
			||||||
 | 
							echo "2. Login with: echo \$GITHUB_TOKEN | docker login ghcr.io -u ${GITHUB_USERNAME} --password-stdin"
 | 
				
			||||||
 | 
							echo "   or: docker login ghcr.io -u ${GITHUB_USERNAME}"
 | 
				
			||||||
 | 
							exit 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Tag images for GHCR
 | 
				
			||||||
 | 
					echo "Tagging images for GHCR..."
 | 
				
			||||||
 | 
					docker tag "${LOCAL_IMAGE}" "${GHCR_IMAGE_1}"
 | 
				
			||||||
 | 
					docker tag "${LOCAL_IMAGE}" "${GHCR_IMAGE_2}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Push to GHCR
 | 
				
			||||||
 | 
					echo "Pushing ${GHCR_IMAGE_1}..."
 | 
				
			||||||
 | 
					if docker push "${GHCR_IMAGE_1}"; then
 | 
				
			||||||
 | 
						echo "✅ Successfully pushed ${GHCR_IMAGE_1}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "❌ Failed to push ${GHCR_IMAGE_1}"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Pushing ${GHCR_IMAGE_2}..."
 | 
				
			||||||
 | 
					if docker push "${GHCR_IMAGE_2}"; then
 | 
				
			||||||
 | 
						echo "✅ Successfully pushed ${GHCR_IMAGE_2}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "❌ Failed to push ${GHCR_IMAGE_2}"
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "🎉 Successfully published Docker images to GitHub Container Registry!"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Images available at:"
 | 
				
			||||||
 | 
					echo "  - ${GHCR_IMAGE_1}"
 | 
				
			||||||
 | 
					echo "  - ${GHCR_IMAGE_2}"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "To run from GHCR:"
 | 
				
			||||||
 | 
					echo "  docker run -p 3000:3000 -p 3001:3001 ${GHCR_IMAGE_1}"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "To update run-docker.sh to use GHCR:"
 | 
				
			||||||
 | 
					echo "  ./run-docker.sh container-name ${TAG} --from-ghcr"
 | 
				
			||||||
@@ -2,22 +2,47 @@
 | 
				
			|||||||
set -euo pipefail
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Run Docker container for Voice RSS Summary project
 | 
					# Run Docker container for Voice RSS Summary project
 | 
				
			||||||
# Usage: ./run-docker.sh [container-name] [image-tag]
 | 
					# Usage: ./run-docker.sh [container-name] [image-tag] [--from-ghcr]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GITHUB_USERNAME="anosatsuk124"
 | 
				
			||||||
IMAGE_NAME="voice-rss-summary"
 | 
					IMAGE_NAME="voice-rss-summary"
 | 
				
			||||||
CONTAINER_NAME="${1:-voice-rss-summary}"
 | 
					CONTAINER_NAME="${1:-voice-rss-summary}"
 | 
				
			||||||
IMAGE_TAG="${2:-latest}"
 | 
					IMAGE_TAG="${2:-latest}"
 | 
				
			||||||
 | 
					FROM_GHCR=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Check for --from-ghcr flag
 | 
				
			||||||
 | 
					for arg in "$@"; do
 | 
				
			||||||
 | 
						if [[ "$arg" == "--from-ghcr" ]]; then
 | 
				
			||||||
 | 
							FROM_GHCR=true
 | 
				
			||||||
 | 
							break
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "$FROM_GHCR" == "true" ]]; then
 | 
				
			||||||
 | 
						FULL_IMAGE="ghcr.io/${GITHUB_USERNAME}/${IMAGE_NAME}:${IMAGE_TAG}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
	FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
 | 
						FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Starting Docker container: ${CONTAINER_NAME}"
 | 
					echo "Starting Docker container: ${CONTAINER_NAME}"
 | 
				
			||||||
echo "Using image: ${FULL_IMAGE}"
 | 
					echo "Using image: ${FULL_IMAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check if image exists
 | 
					# Check if image exists or pull from GHCR
 | 
				
			||||||
if ! docker image inspect "${FULL_IMAGE}" >/dev/null 2>&1; then
 | 
					if ! docker image inspect "${FULL_IMAGE}" >/dev/null 2>&1; then
 | 
				
			||||||
 | 
						if [[ "$FROM_GHCR" == "true" ]]; then
 | 
				
			||||||
 | 
							echo "Pulling image from GitHub Container Registry..."
 | 
				
			||||||
 | 
							if ! docker pull "${FULL_IMAGE}"; then
 | 
				
			||||||
 | 
								echo "Error: Failed to pull Docker image '${FULL_IMAGE}' from GHCR"
 | 
				
			||||||
 | 
								echo "Make sure the image exists and you have access to it"
 | 
				
			||||||
 | 
								exit 1
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
		echo "Error: Docker image '${FULL_IMAGE}' not found"
 | 
							echo "Error: Docker image '${FULL_IMAGE}' not found"
 | 
				
			||||||
		echo "Build it first with: ./build-docker-image.sh"
 | 
							echo "Build it first with: ./build-docker-image.sh"
 | 
				
			||||||
 | 
							echo "Or use --from-ghcr flag to pull from GitHub Container Registry"
 | 
				
			||||||
		exit 1
 | 
							exit 1
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Stop and remove existing container if it exists
 | 
					# Stop and remove existing container if it exists
 | 
				
			||||||
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
 | 
					if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
 | 
				
			||||||
@@ -57,10 +82,13 @@ exec docker run \
 | 
				
			|||||||
	--health-retries=3 \
 | 
						--health-retries=3 \
 | 
				
			||||||
	"${FULL_IMAGE}"
 | 
						"${FULL_IMAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "\nContainer started successfully!"
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Container started successfully!"
 | 
				
			||||||
echo "Container name: ${CONTAINER_NAME}"
 | 
					echo "Container name: ${CONTAINER_NAME}"
 | 
				
			||||||
 | 
					echo "Image: ${FULL_IMAGE}"
 | 
				
			||||||
echo "Web UI: http://localhost:3000"
 | 
					echo "Web UI: http://localhost:3000"
 | 
				
			||||||
echo "Admin panel: http://localhost:3001"
 | 
					echo "Admin panel: http://localhost:3001"
 | 
				
			||||||
echo "\nTo view logs: docker logs -f ${CONTAINER_NAME}"
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "To view logs: docker logs -f ${CONTAINER_NAME}"
 | 
				
			||||||
echo "To stop: docker stop ${CONTAINER_NAME}"
 | 
					echo "To stop: docker stop ${CONTAINER_NAME}"
 | 
				
			||||||
echo "To remove: docker rm ${CONTAINER_NAME}"
 | 
					echo "To remove: docker rm ${CONTAINER_NAME}"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user