Quando você tem alguma aplicação que precisa acessar uma base existente no Cloud SQL mas que a mesma se encontra em um container Docker, podemos fazer uso do docker-compose.yaml
para definir os serviços.
Além da sua aplicação, vamos precisar de uma imagem que possua o binário cloud_sql_proxy
, como a imagem gcr.io/cloudsql-docker/gce-proxy
.
Abaixo vamos fazer a execução e o bind via adhoc com o comando docker
como exemplo:
docker run -d \
-v PATH_TO_KEY_FILE:/config \
-p 127.0.0.1:5432:5432 \
gcr.io/cloudsql-docker/gce-proxy:1.32.0 /cloud_sql_proxy \
-instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:5432 \
-credential_file=/config
Seguindo essa mesma premissa, vamos preparar o docker-compose.yaml
version: "3.8"
services:
app:
# ...
database:
container_name: "cloud-sql-proxy"
image: gcr.io/cloudsql-docker/gce-proxy:1.32.0
volumes:
- ./serviceAccount.json:/config
ports:
- 5432:5432
command: "/cloud_sql_proxy -instances=project-12e2:us-central1:database-instance=tcp:0.0.0.0:5432 -credential_file=/config"