GCP docker

Create GCP Artifact Registry for docker image

# Enable the Artifact Registry API
    gcloud services enable artifactregistry.googleapis.com || true

# Create a Docker repository in a specific region
    gcloud artifacts repositories create ${docker_repo_name} \
        --repository-format=docker \
        --location=${region} \
        --description="Docker images for my application" || true

# Verify the repository was created
    gcloud artifacts repositories list --location=${region} || true

# Give Cloud VM instance permission to pull images: https://console.cloud.google.com/iam-admin/iam?project=cosmic-kiln-99999
    project_id=$(gcloud config get-value project)
    project_number=$(gcloud projects describe ${project_id} --format='value(projectNumber)')
    gcloud projects add-iam-policy-binding $project_id \
        --member="serviceAccount:${project_number}[email protected]" \
        --role="roles/artifactregistry.reader" || true

# Locally: Configure Docker to use gcloud as a credential helper: You never have to manually run docker login to push or pull images.
    gcloud auth configure-docker ${region}-docker.pkg.dev || true

Retag and push your docker image to GCP Artifact Registry

# Retag existing local image and push to Gitlab registry.
    docker_repo_name=my-docker-repo-${region}
    image_version="latest"
    gar_image_full_name="${region}-docker.pkg.dev/${project_id}/${docker_repo_name}/${image_name}:${image_version}"
    echo "💲 docker tag ${image_name} ${gar_image_full_name}"
    echo "💲 docker push ${gar_image_full_name}"
    docker tag ${image_name} ${gar_image_full_name}
    docker push ${gar_image_full_name}

# List images in the repository
    echo "💲 gcloud artifacts docker images list ${region}-docker.pkg.dev/${project_id}/${docker_repo_name}"
    gcloud artifacts docker images list ${region}-docker.pkg.dev/${project_id}/${docker_repo_name}

Pull docker image from GCP Artifact Registry

# Force gcloud to configure Docker credentials for the root environment
HOME=/root gcloud auth configure-docker us-central1-docker.pkg.dev --quiet

# Pull
GAR_IMAGE_NAME="us-central1-docker.pkg.dev/cosmic-kiln-99999/my-docker-repo-us-central1/${IMAGE_NAME}"
GAR_IMAGE_VERSION="latest"
docker pull "${GAR_IMAGE_NAME}:${GAR_IMAGE_VERSION}"