mysql容器

时间:2018-02-07 16:31:47

标签: mysql docker gogs

我在设置本地git存储库时遇到了一些麻烦。我是docker的新手,所以问题可能很幼稚,但我仍然找不到它。

所以我的想法是:  我想用gogs(gogs / gogs图像)创建一个容器并将其连接到mysql容器。

为此,我创建了docker-compose.yml文件。

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

我都把phpmyadmin放在我的设置中,这样我就可以轻松测试mysql是否启动并响应其他容器。

可悲的是,这个环境不起作用,当在localhost:10080上访问gogs安装页面并尝试创建一个新的repo时,它说tcp连接已被拒绝。这是错误消息的输出:

dial tcp 127.0.0.1:10023: getsockopt: connection refused

这很奇怪,因为我可以通过phpmyadmin访问mysql容器。我也能够创建gogs数据库。

以前有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:1)

不要在容器内使用localhost或127.0.0.1,请使用docker-compose中定义的服务名称。

dial tcp db:10023

docker-compose networking

答案 1 :(得分:0)

非常感谢gogsdoc_db_1。他/她的回答是完美的。我将尝试解释我做错了什么,所以也许这会有助于像我这样的码头工作者的新进入。

作为bluescores,已经说过了。您不应该在docker容器中使用localhost或127.0.0.1。

为什么不呢?

基本上,当您使用docker-compose时,它会自动为您的应用创建共享网络,这意味着您不应该使用已发布的端口。 在可能的情况下,我必须使用端口3306,而不是10023连接到我的数据库容器。

如果我想从本地计算机连接到mysql,我仍然应该使用端口10023。

所以我的配置现在是

enter image description here enter image description here

P.S。 在安装gogs之前不要忘记创建数据库