Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

538
Vistas
How to configure postgresql to run FastAPI tests in BitBucket Pipelines

I'm trying to set up pipelines for a FastAPI boilerplate that I am working on. What I have so far failed and I can't figure out why.  Here's what I have:

bitbucket-pipelines.yml

image: python:3.7.4-slim-buster

options:
    max-time: 5

definitions: 
    steps:
        - step: &test
            name: test
            script:
                - >-
                    docker build -f {{cookiecutter.app_name}}/{{cookiecutter.service_name}}/tests.dockerfile
                    -t boilerplate ./{{cookiecutter.app_name}}/{{cookiecutter.service_name}}
                - >-
                    docker run --env POSTGRES_HOST=host.docker.internal 
                    --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL boilerplate
                    /bin/bash -c /run-tests.sh
            services:
                - docker
                - postgres
            caches:
                - docker
    services: 
        postgres: 
            image: postgres
            environment:
                POSTGRES_HOST_AUTH_METHOD: trust

pipelines:
    pull-requests:
        '**':
            - step: *test

I'm connecting to my database with:

DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://postgres@localhost/postgres')

Here's the error I got when I ran the pipeline:

E   sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
E       Is the server running on host "localhost" (127.0.0.1) and acceptingE    TCP/IP connections on port 5432?
E   
E   (Background on this error at: http://sqlalche.me/e/13/e3q8)

I added postgresql://postgres@localhost/postgres because that's how BitBucket sets up postgresql for a default user. What am I doing wrong?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Based on what I found in this article, here's a snippet:

If you need to communicate from a service running in docker to a service running in your build container, when starting the service provide it the following host entry using --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL you can then access the service using host.docker.internal:port

I was supposed to specify host.docker.internal as my host:

DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://postgres@host.docker.internal/postgres')

instead of using localhost

Another approach would be to do the following:

DATABASE_URL = os.getenv('DATABASE_URL')

then instead of doing docker run --env POSTGRES_HOS=host.docker.internal, just do:

definitions: 
    steps:
        - step: &test
            name: test
            script:
                ...
                ...
                - >-
                    docker run --env DATABASE_URL=postgresql://postgres@host.docker.internal/postgres 
                    --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL boilerplate
                    /bin/bash -c /run-tests.sh
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda