首页 > 解决方案 > 无法解析主机:git

问题描述

我见过Gogs + Drone getsockopt:连接被拒绝,但我想知道是否发生了变化。

我的 docker-compose.yml

  git:
    image: gogs/gogs
    ports:
      - '8300:3000'
      - '443:443'
      - '8322:22'
    volumes:
      - 'gogs-data:/data'
    depends_on:
      - database
    labels:
      - 'traefik.backend=git'
      - 'traefik.port=3000'
      - 'traefik.frontend.rule=Host:git.drone.localhost'

  drone-server:
    image: drone/drone:0.8

    ports:
      - 8000
      - 9000
    volumes:
      - drone-server-data:/var/lib/drone/
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=http://drone-server:8000
      - DRONE_SECRET=SECRET
      - DRONE_GOGS=true
      - DRONE_GOGS_URL=http://git:3000
      - DRONE_GOGS_SKIP_VERIFY=true

将 gogs 中我的 repo 的 webhook 更改为http://droner-server:8000 后,我可以看到无人机开始执行。但它无法克隆回购:

+ git remote add origin http://git:3000/gituser/repo.git    0s
+ git fetch --no-tags origin +refs/heads/g2:    0s
fatal: unable to access 'http://git:3000/gituser/repo.git/': Could not resolve host: git

标签: dockerdocker-composedronedrone.iogogs

解决方案


  1. 不要忘记顶部的版本标签
  2. docker-compose 文件中的容器不能访问其他容器的端口,除非它们是同一个网络。git 容器的 3000 端口是 gogs 监听的地方,但它映射到主机上的 8300 端口。您可以像这样添加桥接网络:

docker-compose.yaml

    version: '3'
    services:
      git:
        image: gogs/gogs
        ports:
          - '8300:3000'
          - '443:443'
          - '8322:22'
        volumes:
          - 'gogs-data:/data'
        networks:
          - my-net
        depends_on:
          - database
        labels:
          - 'traefik.backend=git'
          - 'traefik.port=3000'
          - 'traefik.frontend.rule=Host:git.drone.localhost'
      drone-server:
        image: drone/drone:0.8
        ports:
          - 8000
          - 9000
        volumes:
          - drone-server-data:/var/lib/drone/
        networks:
          - my-net
        environment:
          - DRONE_OPEN=true
          - DRONE_HOST=http://drone-server:8000
          - DRONE_SECRET=SECRET
          - DRONE_GOGS=true
          - DRONE_GOGS_URL=http://git:3000
          - DRONE_GOGS_SKIP_VERIFY=true
    networks:
      my-net:
        driver: bridge

推荐阅读