Docker gogs connection is refused by mysql container

懵懂的女人 提交于 2019-12-25 00:06:55

问题


I have some trouble with setting my local git repository. I am new to docker, so the problem may be naive but I still can't find it.

So my idea is: I wanted to create a container with gogs (gogs/gogs image) and connect it to mysql container.

To do so I have created docker-compose.yml file.

version: '3'
services:
  db:
    image: mysql
    ports:
      - "10023:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root!
  ui:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8989:80"
    links:
      - db:mysql
  repo:
    image: gogs/gogs
    ports:
      - "10022:22"
      - "10080:3000"
    volumes:
      - /tmp/gogs:/data gogs/gogs
    links:
      - db:mysql

I all put phpmyadmin in my setup, this way I can easily test if mysql is up and respond to other containers.

Sadly this environment does't work, when get to gogs install page on localhost:10080 and try to create a new repo, it says that tcp connection has been refused. This is the output of the error message:

dial tcp 127.0.0.1:10023: getsockopt: connection refused

This is strange, because I can access to mysql container through phpmyadmin. I also was able to create gogs database.

Do anybody had this issue before?


回答1:


Don't use localhost or 127.0.0.1 from inside the container, use the service name as defined in your docker-compose.

dial tcp db:10023

docker-compose networking.




回答2:


Thank a lot to gogsdoc_db_1. His/her answer is perfect. I will try to explain what I have done wrong, so maybe this would help new entry in docker such as myself.

As bluescores, have said. You shouldn't use localhost or 127.0.0.1 inside you docker container.

Why not?

Basically, when you use docker-compose it automatically create shared network for your app, which means you shouldn't use the published port. In may case I must use port 3306, instead of 10023 to connect to my database container.

I should still use port 10023 if I want to connect to mysql from my local machine.

so my configuration now is

P.S. Do not forget to create the database, before you install gogs



来源:https://stackoverflow.com/questions/48668793/docker-gogs-connection-is-refused-by-mysql-container

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!