Reputation: 1447
Docker noob alert. Hope this isn't a dumb question but I cannot seem to figure out what is going on. I am trying to create a docker-compose file which creates a mysql db with a mounted volume and a go webserver app that connects to the mysql db.
Here is my docker-compose file:
services:
db:
image: mysql:8.0.2
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: northernairport
ports:
- "3306:3306"
volumes:
- /data:/var/lib/mysql
web:
depends_on:
- db
build: .
ports:
- "8080:8080"
My go application can't seem to connect to my mysql db though, I thought the "depends_on" would ensure this was possible.
Error I get:
panic: dial tcp 127.0.0.1:3306: getsockopt: connection refused
Can anyone tell me what I am doing wrong here? Thanks.
Upvotes: 0
Views: 737
Reputation: 739
The ports
part is used to map container ports with host in following format ports (HOST:CONTAINER)
. Which means that you are trying to access host's machine, configure web
app to connect to db:3306
instead.
Upvotes: 1
Reputation: 1357
The depends_on
only controls the build and startup order for the services.
Your actual issue is more likely that you are using the wrong address from your web application to your database. I see that you have not defined any networks, so you are using the default
network created for your application by docker-compose
. This will publish each service by name on the default network's DNS.
So, your web application should probably be using db:3306
as the database address, not localhost:3306
or 127.0.0.1:3306
as indicated in the error message.
Upvotes: 4