Questa guida mostra come utilizzare i buildpack con il codice sorgente della tua applicazione per creare un'immagine container. Ad esempio, utilizza i buildpack per creare il codice sorgente del servizio Cloud Run in un'immagine container.
Esistono due metodi per creare immagini container con i buildpack:
- Crea localmente con l'interfaccia a riga di comando
pack
per testare localmente la tua applicazione e creare rapidamente prototipi di modifiche prima del deployment. - Crea da remoto con Cloud Build. La creazione con Cloud Build è utile per applicazioni di grandi dimensioni con processi di compilazione che richiedono molte risorse e può anche contribuire a proteggere la catena di fornitura del software.
Build locali
Puoi utilizzare l'interfaccia a riga di comando pack
per creare localmente la tua applicazione in un'immagine container.
Prima di iniziare
- Installa Docker Community Edition (CE) sulla tua workstation. Docker è utilizzato da
pack
come generatore di immagini OCI. - Installa Pack CLI.
- Installa lo strumento Controllo del codice sorgente Git per recuperare l'applicazione di esempio da GitHub.
Crea un'applicazione localmente
Utilizza il comando pack build
e specifica il builder predefinito --builder=gcr.io/buildpacks/builder
per creare localmente le immagini container.
pack build --builder=gcr.io/buildpacks/builder IMAGE_NAME
Sostituisci IMAGE_NAME
con il nome dell'immagine container del tuo servizio.
Puoi anche personalizzare l'immagine container estendendo le immagini di build ed esecuzione.
Crea un'applicazione di esempio in locale
I seguenti esempi mostrano come creare un campione localmente.
- Clona il repository di esempio sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Passa alla directory che contiene il codice campione dell'applicazione:
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
- Utilizza
pack
per creare l'immagine dell'applicazione di esempio:Go
pack build --builder=gcr.io/buildpacks/builder sample-go
Java
pack build --builder=gcr.io/buildpacks/builder sample-java-gradle
Node.js
pack build --builder=gcr.io/buildpacks/builder sample-node
PHP
pack build --builder=gcr.io/buildpacks/builder sample-php
Python
pack build --builder=gcr.io/buildpacks/builder sample-python
Ruby
pack build --builder=gcr.io/buildpacks/builder sample-ruby
.NET
pack build --builder=gcr.io/buildpacks/builder sample-dotnet
- Esegui l'immagine utilizzando
docker
:Go
docker run -p8080:8080 sample-go
Java
docker run -it -ePORT=8080 -p8080:8080 sample-java-gradle
Node.js
docker run -it -ePORT=8080 -p8080:8080 sample-node
PHP
docker run -it --rm -p 8080:8080 sample-php
Python
docker run -it -ePORT=8080 -p8080:8080 sample-python
Ruby
docker run -it -ePORT=8080 -p8080:8080 sample-ruby
.NET
docker run -it -ePORT=8080 -p8080:8080 sample-dotnet
- Visita l'applicazione in esecuzione visitando il sito localhost:8080.
Build remote
Utilizza Cloud Build per creare la tua applicazione in un'immagine container e Artifact Registry come repository di container da cui esegui l'archiviazione e il deployment di ogni immagine.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Build and Artifact Registry.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Build and Artifact Registry.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
- Assicurati che il tuo progetto Google Cloud abbia accesso a un repository di immagini container.
Per configurare l'accesso a un repository Docker in Artifact Registry:
- Crea un nuovo repository Docker nella stessa località del tuo progetto Google Cloud.
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
Sostituisci:REPO_NAME
con il nome che scegli per il tuo repository Docker.REGION
con la località corrispondente o più vicina alla località del tuo progetto Google Cloud.DESCRIPTION
con una descrizione a tua scelta.
Ad esempio, per creare un repository
docker
inus-west2
con la descrizione "Repository Docker", esegui:gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- Verifica che il repository sia stato creato:
gcloud artifacts repositories list
Nell'elenco dovresti vedere il nome che hai scelto per il tuo repository Docker.
- Crea un nuovo repository Docker nella stessa località del tuo progetto Google Cloud.
Crea un'applicazione da remoto
Puoi utilizzare il comando gcloud builds submit
per creare e caricare l'immagine container nel tuo repository.
Puoi scegliere di specificare l'immagine container nel comando stesso o utilizzare un file di configurazione.
Crea con comando
Per creare senza un file di configurazione, devi specificare il flag image
:
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Sostituisci:
LOCATION
con il nome della regione del tuo repository di container. Esempio:us-west2
PROJECT_ID
con l'ID del tuo progetto Google Cloud.REPO_NAME
con il nome del tuo repository Docker.IMAGE_NAME
con il nome dell'immagine container.
Esempio:
gcloud builds submit --pack image=us-west2-docker.pkg.dev/my-project-id/my-buildpacks-docker-repo
Crea con i file di configurazione
Puoi utilizzare un file di configurazione per definire i dettagli di configurazione del repository di immagini semplicemente utilizzando il comando di compilazione. Il file di configurazione utilizza il formato file YAML e deve includere un passaggio di build che utilizzi l'interfaccia a riga di comando pack
.
Crea un nome file YAML
cloudbuild.yaml
che includa l'URI del tuo repository di immagini container.options: logging: CLOUD_LOGGING_ONLY pool: {} projectId: PROJECT_ID steps: - name: gcr.io/k8s-skaffold/pack entrypoint: pack args: - build - REPOSITORY_URI - --builder - gcr.io/buildpacks/builder:latest
Sostituisci:
PROJECT_ID
con l'ID del tuo progetto Google Cloud.REPOSITORY_URI
con l'URI del repository delle immagini container. Ad esempio:us-west2-docker.pkg.dev/my-project-id/my-repo-name
Creare l'applicazione.
Se hai denominato il file di configurazione
cloudbuild.yaml
, puoi eseguire questo comando:gcloud builds submit .
Esempio: crea un'applicazione di esempio da remoto
I seguenti esempi mostrano come creare un esempio in remoto e quindi verificare in Artifact Registry che sia stato eseguito il push dell'immagine container nel tuo repository.
- Clona il repository di esempio sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Passa alla directory che contiene il codice campione dell'applicazione:
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
- Utilizza
gcloud
per inviare il codice sorgente dell'applicazione a Cloud Build:Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node
PHP
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby
.NET
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
-
Verifica che l'applicazione di esempio sia stata pubblicata correttamente in
REPO_NAME
:gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME
Sostituisci:
LOCATION
con il nome della regione del repository dei container. Esempio:us-west2
PROJECT_ID
con l'ID del tuo progetto Google Cloud.REPO_NAME
con il nome del tuo repository Docker.
Passaggi successivi
- Esegui il deployment dell'immagine in Cloud Run.
- Imposta le variabili di ambiente.
- Configura le immagini build.
- Velocizza le build con le immagini della cache.