Build and push a Docker image with Cloud Build


ketan_patel@ketanvm:~$ mkdir ketan-docker ; cd ketan-docker


ketan_patel@ketanvm:~/ketan-docker$ echo "Ketan Docker - Hello World! The time is $(date)." > quickstart.sh


ketan_patel@ketanvm:~/ketan-docker$ vi Dockerfile

FROM alpine
COPY quickstart.sh /
CMD ["/quickstart.sh"]

ketan_patel@ketanvm:~/ketan-docker$ chmod +x quickstart.sh 


ketan_patel@ketanvm:~/ketan-docker$ gcloud artifacts repositories create docker-repo-ketan --repository-format=docker --location=us-west1 --description="Ketan Docker repo"

Create request issued for: [docker-repo-ketan]
Waiting for operation [projects/svo-mvp/locations/us-west1/operations/d3050979-42ec-4e5d-846b-4057b6289b18] to
 complete...done.                                                                                             
Created repository [docker-repo-ketan].


ketan_patel@ketanvm:~/ketan-docker$ gcloud artifacts repositories list

Listing items under project svo-mvp, across all locations.

                                                                            ARTIFACT_REGISTRY
REPOSITORY              FORMAT  MODE                 DESCRIPTION              LOCATION     LABELS  ENCRYPTION          CREATE_TIME          UPDATE_TIME          SIZE (MB)
docker-repo-ketan       DOCKER  STANDARD_REPOSITORY  Ketan Docker repo        us-west1             Google-managed key  2023-08-08T16:22:24  2023-08-08T16:22:24  0



ketan_patel@ketanvm:~/ketan-docker$ gcloud config get-value project

svo-mvp

ketan_patel@ketanvm:~/ketan-docker$ gcloud builds submit --region=us-west1 --tag us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1


Creating temporary tarball archive of 2 file(s) totalling 126 bytes before compression.
Uploading tarball of [.] to [gs://svo-mvp_cloudbuild/source/1691511884.402122-193431175b4c4cf48507389b7c2d5f98.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/svo-mvp/locations/us-west1/builds/69e4f585-c088-4098-9704-6c46a90d96b1].
Logs are available at [ https://console.cloud.google.com/cloud-build/builds;region=us-west1/69e4f585-c088-4098-9704-6c46a90d96b1?project=180636258465 ].
--------------------------------------------- REMOTE BUILD OUTPUT ---------------------------------------------
starting build "69e4f585-c088-4098-9704-6c46a90d96b1"

FETCHSOURCE
Fetching storage object: gs://svo-mvp_cloudbuild/source/1691511884.402122-193431175b4c4cf48507389b7c2d5f98.tgz#1691511884765707
Copying gs://svo-mvp_cloudbuild/source/1691511884.402122-193431175b4c4cf48507389b7c2d5f98.tgz#1691511884765707...
/ [1 files][  333.0 B/  333.0 B]                                                
Operation completed over 1 objects/333.0 B.
BUILD
Already have image (with digest): gcr.io/cloud-builders/docker
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM alpine
latest: Pulling from library/alpine
7264a8db6415: Pulling fs layer
7264a8db6415: Verifying Checksum
7264a8db6415: Download complete
7264a8db6415: Pull complete
Digest: sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a
Status: Downloaded newer image for alpine:latest
 ---> 7e01a0d0a1dc
Step 2/3 : COPY quickstart.sh /
 ---> a7094c3fa0ba
Step 3/3 : CMD ["/quickstart.sh"]
 ---> Running in 71645cdce15a
Removing intermediate container 71645cdce15a
 ---> 7d0966c8b136
Successfully built 7d0966c8b136
Successfully tagged us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1
PUSH
Pushing us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1
The push refers to repository [us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image]
98df48de72b3: Preparing
4693057ce236: Preparing
98df48de72b3: Pushed
4693057ce236: Pushed
tag1: digest: sha256:39d5c14566844bc85cc826526c09b51bd809a38e1ccbc78c44bd002ebfaaebb4 size: 735
DONE
---------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                 IMAGES                                                                   STATUS
69e4f585-c088-4098-9704-6c46a90d96b1  2023-08-08T16:24:44+00:00  11S       gs://svo-mvp_cloudbuild/source/1691511884.402122-193431175b4c4cf48507389b7c2d5f98.tgz  us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1  SUCCESS
ketan_patel@ketanvm:~/ketan-docker$





Build an image using a build config file

Use a Cloud Build config file to build the same Docker image as above. The build config file instructs Cloud Build to perform tasks based on your specifications.

In the same directory that contains quickstart.sh and the Dockerfile, create a file named cloudbuild.yaml with the following contents. This file is your build config file. At build time, Cloud Build automatically replaces $PROJECT_ID with your project ID.

ketan_patel@ketanvm:~/ketan-docker$ vi cloudbuild.yaml


steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'us-west1-docker.pkg.dev/$PROJECT_ID/docker-repo-ketan/quickstart-image:tag1', '.' ]
images:
- 'us-west1-docker.pkg.dev/$PROJECT_ID/docker-repo-ketan/quickstart-image:tag1'


ketan_patel@ketanvm:~/ketan-docker$ gcloud builds submit --region=us-west1 --config cloudbuild.yaml

Creating temporary tarball archive of 3 file(s) totalling 370 bytes before compression.
Uploading tarball of [.] to [gs://svo-mvp_cloudbuild/source/1691512568.862676-7e542fdc250a4221b60dfcd6a65a2204.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/svo-mvp/locations/us-west1/builds/9f7e496e-2051-43d1-91ce-ffc68a3c30d2].
Logs are available at [ https://console.cloud.google.com/cloud-build/builds;region=us-west1/9f7e496e-2051-43d1-91ce-ffc68a3c30d2?project=180636258465 ].
--------------------------------------------- REMOTE BUILD OUTPUT ---------------------------------------------
starting build "9f7e496e-2051-43d1-91ce-ffc68a3c30d2"

FETCHSOURCE
Fetching storage object: gs://svo-mvp_cloudbuild/source/1691512568.862676-7e542fdc250a4221b60dfcd6a65a2204.tgz#1691512569117997
Copying gs://svo-mvp_cloudbuild/source/1691512568.862676-7e542fdc250a4221b60dfcd6a65a2204.tgz#1691512569117997...
/ [1 files][  500.0 B/  500.0 B]                                                
Operation completed over 1 objects/500.0 B.
BUILD
Already have image (with digest): gcr.io/cloud-builders/docker
Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM alpine
latest: Pulling from library/alpine
7264a8db6415: Pulling fs layer
7264a8db6415: Verifying Checksum
7264a8db6415: Download complete
7264a8db6415: Pull complete
Digest: sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a
Status: Downloaded newer image for alpine:latest
 ---> 7e01a0d0a1dc
Step 2/3 : COPY quickstart.sh /
 ---> 73868682cf47
Step 3/3 : CMD ["/quickstart.sh"]
 ---> Running in 43622ce16338
Removing intermediate container 43622ce16338
 ---> 0526b7623423
Successfully built 0526b7623423
Successfully tagged us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1
PUSH
Pushing us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1
The push refers to repository [us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image]
98df48de72b3: Preparing
4693057ce236: Preparing
4693057ce236: Layer already exists
98df48de72b3: Pushed
tag1: digest: sha256:1fe70fa5760d2215fb2458921c539059a5e3e8e716f21d204128d96b446ba820 size: 735
DONE
---------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                 IMAGES                                                                   STATUS
9f7e496e-2051-43d1-91ce-ffc68a3c30d2  2023-08-08T16:36:09+00:00  15S       gs://svo-mvp_cloudbuild/source/1691512568.862676-7e542fdc250a4221b60dfcd6a65a2204.tgz  us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1  SUCCESS
ketan_patel@ketanvm:~/ketan-docker$ pwd
/home/ketan_patel/ketan-docker
ketan_patel@ketanvm:~/ketan-docker$ cat cloudbuild.yaml 
steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'us-west1-docker.pkg.dev/$PROJECT_ID/docker-repo-ketan/quickstart-image:tag1', '.' ]
images:
- 'us-west1-docker.pkg.dev/$PROJECT_ID/docker-repo-ketan/quickstart-image:tag1'
ketan_patel@ketanvm:~/ketan-docker$ 










ketan_patel@ketanvm:~/pull_from_docker_repo_ketan$ gcloud auth print-access-token | sudo docker login -u oauth2accesstoken --password-stdin us-west1-docker.pkg.dev

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded


ketan_patel@ketanvm:~/pull_from_docker_repo_ketan$ sudo docker pull     us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1

tag1: Pulling from svo-mvp/docker-repo-ketan/quickstart-image
7264a8db6415: Pull complete 
b37f6abd168d: Pull complete 
Digest: sha256:1fe70fa5760d2215fb2458921c539059a5e3e8e716f21d204128d96b446ba820
Status: Downloaded newer image for us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1
us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image:tag1

ketan_patel@ketanvm:~/pull_from_docker_repo_ketan$ sudo docker images

REPOSITORY                                                           TAG       IMAGE ID       CREATED          SIZE
us-west1-docker.pkg.dev/svo-mvp/docker-repo-ketan/quickstart-image   tag1      0526b7623423   40 minutes ago   7.34MB
hello-world                                                          latest    9c7a54a9a43c   3 months ago     13.3kB
ketan_patel@ketanvm:~/pull_from_docker_repo_ketan$




No comments:

Post a Comment

AppEngine - Python

tudent_04_347b5286260a@cloudshell:~/python-docs-samples/appengine/standard_python3/hello_world (qwiklabs-gcp-00-88834e0beca1)$ sudo apt upda...