You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.
View groupJoin the community to find out what other Atlassian users are discussing, debating and creating.
I'm using the `docker` service to perform a docker run command & I am also using the `mysql` service. I can seem to connect to the mysql service from within the docker container. I keep getting "connection refused" any help?
Hey @Jamie Bailey , welcome to the Atlassian Community.
No idea if I get you right here. So within your Pipeline Container (that is also a Docker container) you are running `docker run command-container ...` that should connect to the `mysql` service that is added to the pipeline step?
For illustration:
pipelines:
default:
- step:
image: ktomk/pipelines:busybox
script:
- docker run command-container ...
services:
- mysql
- docker
The pipeline container (ktomk/pipelines:busybox) can access the services (mysql) via localhost / 127.0.0.1.
This is either also possible for the command-container (use 127.0.0.1 for mysql as "localhost" can cause problems with Mysql) or not. I don't know.
In case it's not, it needs to find it's way through docker networking. So try with "127.0.0.1" and port "3306" first. If that is not possible the other option I know about (details) is to
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>.
this is not exactly your use-case but might give pointers on the networking layout. The post writes that using `--network=host` is not possible any longer, so for the `docker run` command it might still work to add the host hosts.docker.internal as outlined and then the mysql service could be available on host.docker.internal and port 3306.
Hey @ktomk
Forgot to update, I found the solution. So while inside the container I was trying to communicate with the MariaDB/MySQL server using 127.0.0.1 & localhost and this did not work.
To access the host network on BitBucket cloud from within a docker container I used 172.17.0.1
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
`172.17.0.1` is the default docker-ip. It may change and then it breaks.
Better would be to do the suggested internal host resolution with the Bitbucket Pipelines environment variable:
docker run --add-host host.docker.internal:"$BITBUCKET_DOCKER_HOST_INTERNAL" ...
and then use `host.docker.internal` instead of `172.17.0.1`.
You could also `echo "$BITBUCKET_DOCKER_HOST_INTERNAL"` in a pipeline script line to see what this standard variable contains.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@ktomk thank you for the help, that worked.
I did it slightly differently:
docker run --env DB_TEST_HOST=$BITBUCKET_DOCKER_HOST_INTERNAL ...
since our docker app uses this environment variable to access the MariaDB host
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
...hey are a part of us, shaping how we interact with the world around us. The same holds true for programming languages when we think about how different kinds of vulnerabilities raise their heads in t...
Connect with like-minded Atlassian users at free events near you!
Find an eventConnect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.
Host an eventYou're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.