Halaman ini menunjukkan cara menghubungkan PGAdapter ke emulator Spanner. Emulator berjalan secara lokal, dan Anda dapat menggunakannya untuk mengembangkan serta menguji aplikasi tanpa membuat project Google Cloud atau akun penagihan. Karena emulator hanya menyimpan data dalam memori, semua status, termasuk data, skema, dan konfigurasi, akan hilang saat perangkat dimulai ulang. Emulator menawarkan API yang sama dengan layanan produksi Spanner dan ditujukan untuk pengembangan dan pengujian lokal, bukan untuk deployment produksi.
Anda dapat menghubungkan PGAdapter ke emulator dengan tiga cara:
- Jalankan container Docker gabungan bawaan dengan PGAdapter dan emulator.
- Jalankan emulator dan PGAdapter di mesin lokal Anda.
- Jalankan emulator dan PGAdapter di jaringan Docker.
Container Docker gabungan
Jalankan image Docker bawaan yang berisi PGAdapter dan emulator. Instance PGAdapter di container Docker secara otomatis dikonfigurasi agar terhubung ke emulator dalam container.
Mulai container Docker dengan perintah berikut.
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
Anda tidak perlu menentukan project, instance, atau nama database saat memulai container. Secara default, nama project emulator-project
dan nama instance test-instance
akan digunakan. Database apa pun yang Anda hubungkan
dibuat secara otomatis oleh PGAdapter.
Anda dapat terhubung ke PGAdapter dan mengeksekusi pernyataan menggunakan psql
dengan
perintah berikut.
psql -h localhost -p 5432 -d test-database
Database test-database
dibuat secara otomatis. Jalankan pernyataan berikut untuk memverifikasi bahwa Anda terhubung ke database database dialek 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;
Anda juga dapat terhubung langsung ke emulator di dalam container Docker, misalnya dengan gcloud CLI.
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"
Menjalankan emulator dan PGAdapter di mesin lokal Anda
Anda dapat menjalankan emulator dan PGAdapter di mesin lokal Anda, dan menghubungkan PGAdapter ke emulator dengan perintah berikut.
Pertama, mulai emulator.
gcloud emulators spanner start
Kemudian, mulai PGAdapter dan hubungkan ke emulator. Perhatikan bahwa Anda harus memulai PGAdapter sebagai aplikasi Java di mesin lokal agar dapat mengakses emulator. Jika Anda memulai PGAdapter dalam container Docker, emulator tidak akan dapat mengakses emulator yang berjalan di host lokal Anda.
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
Argumen command line tambahan untuk PGAdapter yang digunakan untuk terhubung ke emulator adalah:
-c ""
: Kode ini menginstruksikan PGAdapter untuk tidak menggunakan kredensial apa pun.-r autoConfigEmulator=true
: Elemen ini menginstruksikan PGAdapter untuk terhubung kelocalhost:9010
, yang merupakan host dan port emulator default. Library ini juga menyuruh PGAdapter untuk secara otomatis membuat database apa pun yang terhubung ke pengguna. Ini berarti Anda tidak perlu membuat database sebelum menghubungkannya.
Anda dapat terhubung ke PGAdapter dan mengeksekusi pernyataan menggunakan psql
dengan
perintah berikut.
psql -h localhost -p 5432 -d test-database
Database test-database
dibuat secara otomatis. Jalankan pernyataan berikut untuk memverifikasi bahwa Anda terhubung ke database database dialek 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;
Menjalankan emulator dan PGAdapter di jaringan Docker
Anda dapat menjalankan emulator dan PGAdapter di jaringan Docker serta menghubungkan PGAdapter ke emulator dengan perintah berikut.
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
PGAdapter dan emulator dimulai di jaringan Docker yang sama, dan PGAdapter dikonfigurasi untuk terhubung ke emulator. Argumen command line tambahan untuk PGAdapter yang digunakan untuk terhubung ke emulator adalah:
-c ""
: Kode ini menginstruksikan PGAdapter untuk tidak menggunakan kredensial apa pun.-r autoConfigEmulator=true
: Kode ini menginstruksikan PGAdapter untuk secara otomatis membuat database yang terhubung ke pengguna. Ini berarti Anda tidak perlu membuat database sebelum menghubungkannya.-e emulator:9010
:-e
menentukan endpoint yang harus terhubung dengan PGAdapter.emulator:9010
adalah nama dan nomor port emulator di jaringan Docker yang sama.-x
: Atribut ini memungkinkan koneksi ke PGAdapter dari mesin lokal Anda.
Anda dapat terhubung ke PGAdapter dan mengeksekusi pernyataan menggunakan psql
dengan
perintah berikut.
psql -h localhost -p 5432 -d test-database
Database test-database
dibuat secara otomatis. Jalankan pernyataan berikut untuk memverifikasi bahwa Anda terhubung ke database database dialek 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;
Anda juga dapat terhubung langsung ke emulator di jaringan Docker, misalnya dengan gcloud CLI.
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"