71 lines
2.3 KiB
Bash
Executable File
71 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Build and push script for Yandex Cloud Container Registry
|
|
# Usage: ./scripts/build-and-push. [tag]
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
REGISTRY_ID="${YANDEX_REGISTRY_ID:-your-registry-id}"
|
|
IMAGE_NAME="hr-ai-backend"
|
|
TAG="${1:-latest}"
|
|
FULL_IMAGE_NAME="cr.yandex/${REGISTRY_ID}/${IMAGE_NAME}:${TAG}"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${YELLOW}Building and pushing HR AI Backend to Yandex Cloud Container Registry${NC}"
|
|
|
|
# Check if required environment variables are set
|
|
if [ -z "$REGISTRY_ID" ] || [ "$REGISTRY_ID" = "your-registry-id" ]; then
|
|
echo -e "${RED}Error: YANDEX_REGISTRY_ID environment variable is not set${NC}"
|
|
echo "Please set it to your Yandex Cloud Container Registry ID"
|
|
echo "Example: export YANDEX_REGISTRY_ID=crp1234567890abcdef"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if yc CLI is installed and authenticated
|
|
if ! command -v yc &> /dev/null; then
|
|
echo -e "${RED}Error: Yandex Cloud CLI (yc) is not installed${NC}"
|
|
echo "Please install it from: https://cloud.yandex.ru/docs/cli/quickstart"
|
|
exit 1
|
|
fi
|
|
|
|
# Check authentication
|
|
if ! yc config list | grep -q "token:"; then
|
|
echo -e "${RED}Error: Not authenticated with Yandex Cloud${NC}"
|
|
echo "Please run: yc init"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${YELLOW}Configuring Docker for Yandex Cloud Container Registry...${NC}"
|
|
yc container registry configure-docker
|
|
|
|
echo -e "${YELLOW}Building Docker image: ${FULL_IMAGE_NAME}${NC}"
|
|
docker build -t "${FULL_IMAGE_NAME}" .
|
|
|
|
echo -e "${YELLOW}Pushing image to registry...${NC}"
|
|
docker push "${FULL_IMAGE_NAME}"
|
|
|
|
echo -e "${GREEN}✓ Successfully built and pushed: ${FULL_IMAGE_NAME}${NC}"
|
|
|
|
# Also tag as latest if a specific tag was provided
|
|
if [ "$TAG" != "latest" ]; then
|
|
LATEST_IMAGE_NAME="cr.yandex/${REGISTRY_ID}/${IMAGE_NAME}:latest"
|
|
echo -e "${YELLOW}Tagging as latest...${NC}"
|
|
docker tag "${FULL_IMAGE_NAME}" "${LATEST_IMAGE_NAME}"
|
|
docker push "${LATEST_IMAGE_NAME}"
|
|
echo -e "${GREEN}✓ Also pushed as: ${LATEST_IMAGE_NAME}${NC}"
|
|
fi
|
|
|
|
echo -e "${GREEN}Build and push completed successfully!${NC}"
|
|
echo ""
|
|
echo "Image is available at:"
|
|
echo " ${FULL_IMAGE_NAME}"
|
|
echo ""
|
|
echo "To use in production, update your docker-compose.prod.yml:"
|
|
echo " backend:"
|
|
echo " image: ${FULL_IMAGE_NAME}" |