Questa pagina mostra come collegare PGAdapter all'emulatore Spanner. L'emulatore viene eseguito localmente e puoi usarlo per sviluppare e testare le tue applicazioni senza creare un progetto Google Cloud o un account di fatturazione. Poiché l'emulatore archivia i dati solo la memoria e tutti gli stati, inclusi dati, schema e configurazioni, vengono persi al riavvio. L'emulatore offre le stesse API dell'ambiente di produzione Spanner ed è destinato allo sviluppo e ai test locali, non alla produzione deployment di machine learning.
Puoi collegare PGAdapter all'emulatore in tre modi diversi:
- Esegui un container Docker combinato predefinito con PGAdapter e l'emulatore.
- Esegui sia l'emulatore sia PGAdapter sulla tua macchina locale.
- Esegui sia l'emulatore che PGAdapter in una rete Docker.
Container Docker combinato
Esegui l'immagine Docker predefinita che contiene sia PGAdapter un emulatore. L'istanza PGAdapter nel contenitore Docker viene configurata automaticamente per connettersi all'emulatore nel contenitore.
Avvia il container Docker con il seguente comando.
docker pull gcr.io/cloud-spanner-pg-adapter/pgadapter-emulator
docker run -d \
-p 5432:5432 \
-p 9010:9010 \
-p 9020:9020 \
gcr.io/cloud-spanner-pg-adapter/pgadapter-emulator
Non devi specificare il nome di un progetto, di un'istanza o di un database quando avvii
nel container. Per impostazione predefinita verranno utilizzati il nome del progetto emulator-project
e il nome dell'istanza test-instance
. Qualsiasi database a cui ti connetti viene automaticamente
creato da PGAdapter.
Puoi connetterti a PGAdapter ed eseguire istruzioni con psql
con
il comando seguente.
psql -h localhost -p 5432 -d test-database
Il database test-database
viene creato automaticamente. Esegui queste istruzioni
per verificare la connessione a un database di database di dialetti PostgreSQL:
create table my_table (
id bigint not null primary key,
value varchar
);
insert into my_table (id, value) values (1, 'One');
select * from my_table;
Puoi anche connetterti direttamente all'emulatore all'interno del contenitore Docker, ad esempio con l'interfaccia a riga di comando gcloud.
gcloud config configurations create emulator
gcloud config set auth/disable_credentials true
gcloud config set project emulator-project
gcloud config set api_endpoint_overrides/spanner http://localhost:9020/
gcloud spanner instances list
gcloud spanner databases execute-sql test-database \
--instance=test-instance \
--sql="select * from my_table"
Esegui l'emulatore e PGAdapter sulla tua macchina locale
Puoi eseguire sia l'emulatore che PGAdapter sulla tua macchina locale e connetti PGAdapter all'emulatore usando i comandi seguenti.
Per prima cosa, avvia l'emulatore.
gcloud emulators spanner start
Quindi avvia PGAdapter e connettilo all'emulatore. Tieni presente che devi avviare PGAdapter come applicazione Java sulla tua macchina locale affinché possa accedere all'emulatore. Se avvii PGAdapter in un Docker non riesce ad accedere all'emulatore in esecuzione host locale.
wget https://storage.googleapis.com/pgadapter-jar-releases/pgadapter.tar.gz \
&& tar -xzvf pgadapter.tar.gz
java -jar pgadapter.jar -p emulator-project -i test-instance \
-c "" \
-r autoConfigEmulator=true
Gli argomenti della riga di comando aggiuntivi per PGAdapter utilizzati per collegarsi all'emulatore sono:
-c ""
: questo indica a PGAdapter di non utilizzare alcuna credenziale.-r autoConfigEmulator=true
: questo comando indica a PGAdapter di connettersi alocalhost:9010
, che è l'host e la porta dell'emulatore predefiniti. Inoltre, indica a PGAdapter di creare automaticamente qualsiasi database che un utente si connette. Ciò significa che non devi creare un database prima di collegarti.
Puoi connetterti a PGAdapter ed eseguire istruzioni con psql
con
il comando seguente.
psql -h localhost -p 5432 -d test-database
Il database test-database
viene creato automaticamente. Esegui queste istruzioni
per verificare di essere connesso a un database in dialetto PostgreSQL:
create table my_table (
id bigint not null primary key,
value varchar
);
insert into my_table (id, value) values (1, 'One');
select * from my_table;
Esegui l'emulatore e PGAdapter in una rete Docker
Puoi eseguire sia l'emulatore sia PGAdapter in una rete Docker e collegare PGAdapter all'emulatore con i seguenti comandi.
cat <<EOT > docker-compose.yml
version: "3.9"
services:
emulator:
image: "gcr.io/cloud-spanner-emulator/emulator"
pull_policy: always
container_name: spanner-emulator
ports:
- "9010:9010"
- "9020:9020"
pgadapter:
depends_on:
emulator:
condition: service_started
image: "gcr.io/cloud-spanner-pg-adapter/pgadapter"
pull_policy: always
container_name: pgadapter-connected-to-emulator
command:
- "-p emulator-project"
- "-i test-instance"
- "-r autoConfigEmulator=true"
- "-e emulator:9010"
- "-c \"\""
- "-x"
ports:
- "5432:5432"
EOT
docker compose up -d
Sia PGAdapter che l'emulatore vengono avviati nella stessa rete Docker, e PGAdapter è configurato per connettersi all'emulatore. L'ulteriore gli argomenti della riga di comando per PGAdapter utilizzati per connettersi sono:
-c ""
: indica a PGAdapter di non utilizzare alcuna credenziale.-r autoConfigEmulator=true
: indica a PGAdapter di crea automaticamente qualsiasi database a cui si connette un utente. Ciò significa che non è necessario creare un database prima di accedervi.-e emulator:9010
:-e
specifica l'endpoint a cui deve collegarsi PGAdapter.emulator:9010
è il nome e il numero di porta dell'emulatore nella stessa rete Docker.-x
: consente le connessioni a PGAdapter dalla tua macchina locale.
Puoi connetterti a PGAdapter ed eseguire istruzioni con psql
con
il comando seguente.
psql -h localhost -p 5432 -d test-database
Il database test-database
viene creato automaticamente. Esegui queste istruzioni
per verificare la connessione a un database di database di dialetti PostgreSQL:
create table my_table (
id bigint not null primary key,
value varchar
);
insert into my_table (id, value) values (1, 'One');
select * from my_table;
Puoi anche connetterti direttamente all'emulatore nella rete Docker, ad esempio con l'interfaccia a riga di comando gcloud.
gcloud config configurations create emulator
gcloud config set auth/disable_credentials true
gcloud config set project emulator-project
gcloud config set api_endpoint_overrides/spanner http://localhost:9020/
gcloud spanner instances list
gcloud spanner databases execute-sql test-database \
--instance=test-instance \
--sql="select * from my_table"