In my pipelines I have defined an external service that runs Postgres:
Now, in my pipeline I need to build my web app from a custom Dockerfile and then test it with the DB. So I define my pipeline step as follows:
- docker build -t app .
- docker run app ./run_tests.sh
I can see that Postgres is listening on port 5432 on the main host (executor), but I can't seem to find a way to connect to it from within my app Docker container.
I also tried to run it with `--network="host"` but this doesn't work due to restrictions in place.
Any ideas? In GitLab this works perfectly. Thanks.
Try adding a host-to-IP mapping in your "docker run" command, like this:
docker run --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL app ./run_tests.sh
Then you should be able to connect to the service using host.docker.internal:5432 within the container.
The following blog post explains why this is now needed:
We are excited to announce the open beta program for self-hosted runners. Bitbucket Pipelines Runners is available to everyone. Please try it and let us know your feedback. If you have any issue...
Connect with like-minded Atlassian users at free events near you!Find an event
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.Host an event
You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events