Hello everyone, 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 accepting
E 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?
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.