Yandex Cloud
Search
Contact UsTry it for free
  • Customer Stories
  • Documentation
  • Blog
  • All Services
  • System Status
  • Marketplace
    • Featured
    • Infrastructure & Network
    • Data Platform
    • AI for business
    • Security
    • DevOps tools
    • Serverless
    • Monitoring & Resources
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
    • Price calculator
    • Pricing plans
  • Customer Stories
  • Documentation
  • Blog
© 2026 Direct Cursus Technology L.L.C.
Tutorials
    • All tutorials
      • Deploying a web application using the Java Servlet API
      • Developing a custom integration in API Gateway
      • URL shortener
      • Developing CRUD APIs for a movie service
      • Creating an interactive serverless application using WebSocket
      • Working with an API gateway via WebSocket
      • Creating a Node.js function using TypeScript
      • Running a containerized app in Serverless Containers
      • Connecting to YDB from a Cloud Functions Python function
      • Connecting to a YDB database from a Cloud Functions Node.js function
      • Setting up a Yandex Managed Service for PostgreSQL connection from a container in Serverless Containers
      • Deploying a web app with JWT authorization in API Gateway and authentication in Firebase
      • Developing functions in Functions Framework and deploying them to Yandex Serverless Containers
      • Canary release of a function in Cloud Functions
      • Interactive debugging of functions in Cloud Functions
      • Creating a Yandex Cloud Postbox address and a domain ownership check with Terraform
      • Configuring Postfix to send emails via Yandex Cloud Postbox

In this article:

  • Required paid resources
  • Getting started
  • Prepare files for a Docker image
  • Create the Docker image in the registry
  • Create and set up a Serverless Containers container
  • Delete the resources you created
  1. Serverless technologies
  2. Serverless-based backend
  3. Setting up a Yandex Managed Service for PostgreSQL connection from a container in Serverless Containers

Setting up a Yandex Managed Service for PostgreSQL connection from a container in Serverless Containers

Written by
Yandex Cloud
Updated at April 13, 2026
  • Required paid resources
  • Getting started
  • Prepare files for a Docker image
  • Create the Docker image in the registry
  • Create and set up a Serverless Containers container
  • Delete the resources you created

To connect to the Managed Service for PostgreSQL cluster from the Serverless Containers container:

  1. Prepare files for a Docker image.
  2. Create a Docker image in the registry.
  3. Create and set up a Serverless Containers container.

If you no longer need the resources you created, delete them.

Required paid resourcesRequired paid resources

  • Managed Service for PostgreSQL cluster: computing resources allocated to hosts, storage and backup size (see Managed Service for PostgreSQL pricing).
  • Public IP addresses if public access is enabled for cluster hosts (see Virtual Private Cloud pricing).
  • Container Registry registry: Storing created Docker images and leveraging the vulnerability scanner (see Container Registry pricing).
  • Serverless Containers container: Number of container calls, idle time of provisioned instances, and computing resources allocated to run the container (see Container Registry pricing).

Getting startedGetting started

  1. If you do not have Docker yet, install it. Make sure Docker Engine is running.
  2. If you do not have a Managed Service for PostgreSQL cluster, create one. You can connect from the Serverless Containers container regardless of the public access settings to cluster hosts.

Prepare files for a Docker imagePrepare files for a Docker image

  1. In the local directory, create an Ubuntu-based Dockerfile. The container environment configuration depends on whether there is public access to the cluster hosts:

    Without public access
    With public access
    FROM ubuntu:latest
    
    RUN apt-get update && \
        apt-get install postgresql-client --yes
    
    COPY pg-version.sh pg-version.sh
    
    RUN chmod +x pg-version.sh
    
    ENTRYPOINT ["/pg-version.sh"]
    
    FROM ubuntu:latest
    
    RUN apt-get update && \
        apt-get install wget postgresql-client --yes && \
        mkdir --parents ~/.postgresql && \
        wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
        --output-document ~/.postgresql/root.crt && \
        chmod 0600 ~/.postgresql/root.crt
    
    COPY pg-version.sh pg-version.sh
    
    RUN chmod +x pg-version.sh
    
    ENTRYPOINT ["/pg-version.sh"]
    
  2. Put the pg-version.sh script in the same working directory. The script connects to the database and requests the PostgreSQL version. The connection string in the script depends on whether there is public access to the cluster hosts:

    Without public access
    With public access
    #!/bin/bash
    
    echo "$0: Start: $(date)"
    
    echo "Viewing the PostgreSQL Server Version"
    
    export PGPASSWORD='<password>'
    psql -h <host_FQDN> -p 6432 -U <username> -d <DB_name> -c 'select version();'
    
    echo "$0: End: $(date)"
    
    #!/bin/bash
    
    echo "$0: Start: $(date)"
    
    echo "Viewing the PostgreSQL Server Version"
    
    export PGPASSWORD='<password>'
    psql -h <host_FQDN> -p 6432 --set=sslmode=require -U <username> -d <DB_name> -c 'select version();'
    
    echo "$0: End: $(date)"
    

    In your script, specify the following:

    • FQDN of your cluster host.
    • Username for connection.
    • Password.
    • Name of the database to connect to.

Create the Docker image in the registryCreate the Docker image in the registry

  1. Create a registry in Yandex Container Registry.

  2. Build the Docker image by running the command in the working directory with the Docker file:

    docker build . \
        -t cr.yandex/<registry_ID>/ubuntu:pgconnect
    

    Check that the image with the specified name appeared in the local repository:

    docker images
    
  3. Authenticate in the registry:

    1. Get an IAM token.

    2. Run this command:

      docker login \
      --username iam \
      --password <IAM_token> \
      cr.yandex
      

    For other methods, see Authentication in Container Registry.

  4. Push the Docker image to the registry:

    docker push cr.yandex/<registry_ID>/ubuntu:pgconnect
    

Create and set up a Serverless Containers containerCreate and set up a Serverless Containers container

  1. Create a service account named docker-puller with the container-registry.images.puller role.

  2. Create a Serverless Containers container named demo-pg-connect.

  3. In the container revision settings, specify:

    • Reference to the previously created image in the registry, in the Image URL field.
    • In the Service account docker-puller field, specify Service account.
    • Network in which the Managed Service for PostgreSQL cluster is located, in the Network field. You do not need to specify the network if public access is enabled for the cluster.
  4. Click Create revision.

  5. Copy the link to invoke the container from the General information section in the management console.

  6. Invoke the container by running the command:

    curl --header "Authorization: Bearer $(yc iam create-token)" <invocation_link>
    
  7. Go to the Logssection and make sure the container logs contain information about the PostgreSQL version.

Delete the resources you createdDelete the resources you created

To stop paying for the resources you created:

  1. Delete the Serverless Containers container.
  2. Delete the Docker images from the registry.
  3. Delete the registry.
  4. Delete the service account.
  5. Delete the Managed Service for PostgreSQL cluster.

To delete the created Docker image from the local repository, run the command:

docker rmi cr.yandex/<registry_ID>/ubuntu:pgconnect

Was the article helpful?

Previous
Connecting to a YDB database from a Cloud Functions Node.js function
Next
Deploying a web app with JWT authorization in API Gateway and authentication in Firebase
© 2026 Direct Cursus Technology L.L.C.