In my pipelines I have defined an external service that runs Postgres:
definitions:
services:
db:
image: postgres
environment:
POSTGRES_USER: 'myuser'
POSTGRES_PASSWORD: 'mypassword'
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:
pipelines:
default:
- step:
script:
- docker build -t app .
- docker run app ./run_tests.sh
- services:
- db
- docker
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.
Hi Jozef,
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:
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.