Esta página mostra como conectar o PGAdapter ao emulador do Spanner. O emulador é executado localmente, e você pode usá-lo para desenvolver e testar seus aplicativos sem criar um projeto do Google Cloud ou uma conta de faturamento. Como o emulador armazena dados apenas memória, todo o estado, incluindo dados, esquema e configurações, é perdido na reinicialização. O emulador oferece as mesmas APIs que o servidor de produção do Spanner e se destina a desenvolvimento e teste locais, não para produção implantações.
Você pode conectar o PGAdapter ao emulador de três maneiras diferentes:
- Execute um contêiner do Docker combinado predefinido com o PGAdapter e o emulador.
- Execute o emulador e o PGAdapter na sua máquina local.
- Execute o emulador e o PGAdapter em uma rede do Docker.
Contêiner do Docker combinado
Execute a imagem pré-criada do Docker que contém o PGAdapter e o emulador. A instância do PGAdapter no contêiner do Docker é configurada automaticamente para se conectar ao emulador no contêiner.
Inicie o contêiner do Docker com o comando a seguir.
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
Não é necessário especificar um projeto, uma instância ou um nome de banco de dados ao iniciar
o contêiner. Por padrão, ele usará o nome do projeto emulator-project
e
nome da instância test-instance
. Qualquer banco de dados ao qual você se conecta é criado automaticamente
pelo PGAdapter.
É possível se conectar ao PGAdapter e executar instruções com psql
usando
o comando abaixo.
psql -h localhost -p 5432 -d test-database
O banco de dados test-database
é criado automaticamente. Executar estas instruções
para verificar se você se conectou a um banco de dados de dialeto 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;
Também é possível se conectar diretamente ao emulador dentro do contêiner do Docker, por exemplo, com a CLI 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"
Execute o emulador e o PGAdapter na sua máquina local
Você pode executar o emulador e o PGAdapter na sua máquina local. conecte o PGAdapter ao emulador com os seguintes comandos.
Primeiro, inicie o emulador.
gcloud emulators spanner start
Em seguida, inicie o PGAdapter e conecte-o ao emulador. É necessário iniciar o PGAdapter como um aplicativo Java na máquina local para que ele possa acessar o emulador. Se você iniciar o PGAdapter em um ambiente do Docker contêiner, ele não poderá acessar o emulador que está sendo executado no host local.
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
Os argumentos de linha de comando adicionais para PGAdapter usados para conectar ao emulador são:
-c ""
: instrui o PGAdapter a não usar credenciais.-r autoConfigEmulator=true
: instrui o PGAdapter a se conectar alocalhost:9010
, que é o host e a porta padrão do emulador. Ele também instruí o PGAdapter a criar automaticamente qualquer banco de dados ao qual um usuário se conecte. Isso significa que você não precisa criar um banco de dados antes conectando a ele.
É possível se conectar ao PGAdapter e executar instruções com psql
usando
o comando abaixo.
psql -h localhost -p 5432 -d test-database
O banco de dados test-database
é criado automaticamente. Execute estas instruções
para verificar se você está conectado a um banco de dados do 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;
Executar o emulador e o PGAdapter em uma rede do Docker
É possível executar o emulador e o PGAdapter em uma rede do Docker e conecte o PGAdapter ao emulador com os seguintes comandos.
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
O PGAdapter e o emulador são iniciados na mesma rede do Docker, e o PGAdapter é configurado para se conectar ao emulador. Os argumentos adicionais de linha de comando para o PGAdapter que são usados para se conectar ao emulador são:
-c ""
: instrui o PGAdapter a não usar credenciais.-r autoConfigEmulator=true
: instrui o PGAdapter a criar automaticamente qualquer banco de dados ao qual um usuário se conecte. Isso significa que você não precisa criar um banco de dados antes de se conectar a ele.-e emulator:9010
:-e
especifica o endpoint ao qual o PGAdapter precisa se conectar.emulator:9010
é o nome e o número da porta do emulador no mesma rede Docker.-x
: permite conexões com o PGAdapter da sua máquina local.
É possível se conectar ao PGAdapter e executar instruções com psql
usando
o comando a seguir.
psql -h localhost -p 5432 -d test-database
O banco de dados test-database
é criado automaticamente. Executar estas instruções
para verificar se você se conectou a um banco de dados de dialeto 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;
Também é possível se conectar diretamente ao emulador na rede Docker, por exemplo, com a CLI 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"