【问题标题】:connection refused when using dockerfile to pull git repository使用 dockerfile 拉 git 存储库时连接被拒绝
【发布时间】:2023-03-29 05:07:02
【问题描述】:

kubernetes 的本地设置:Mac OS

Docker for desktop >> kubernetes >> traefik >> Gitea 

gitea 安装在集群中,并通过在http://gitea.local 访问的 treafik 暴露为 clusterIP 服务入口。到这里为止,一切都是黄油般光滑的。

痛苦:

现在我正在创建一个 dockerfile 并使用 docker build 来构建一个图像。此 dockerfile 正在尝试从 http://gitea.local 克隆存储库。问题是我总是被拒绝连接。

RUN mkdir -p apps sites/assets/css  \
    && cd apps \
    && git clone http://gitea.local/inviadmin/testing.git

然后我只是在 dockerfile 中尝试了RUN curl http://gitea.local 只是为了调试并得到相同的结果:

curl: (7) Failed to connect to gitea.local port 80: Connection refused

如果我从 dockerfile 卷曲 google.com 就可以了。非常感谢任何帮助。

Dockerfile:

# syntax = docker/dockerfile:1.0-experimental

FROM bitnami/python:3.7-prod

ENV NVM_DIR=/root/.nvm
ENV NODE_VERSION=12.18.3
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}"
RUN install_packages wget \
    && wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh \
    && chmod +x install.sh \
    && ./install.sh \
    && . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} \
    && nvm use v${NODE_VERSION} && npm install -g yarn

RUN install_packages \
    # when using ssh
    git openssh-client openssh-server iputils-ping
    #git

ARG GIT_BRANCH=master

#RUN ping host.docker.internal

RUN mkdir -p apps sites/assets/css  \
    && cd apps \
    && git clone http://gitea.local/inviadmin/test.git --branch $GIT_BRANCH

FROM nginx:latest
COPY --from=0 /home/test/sample/sites /var/www/html/
COPY --from=0 /var/www/error_pages /var/www/
COPY build/nginx/nginx-default.conf.template /etc/nginx/conf.d/default.conf.template
COPY build/entry/docker-entrypoint.sh /

RUN apt-get update && apt-get install -y rsync && apt-get clean \
    && echo "#!/bin/bash" > /rsync \
    && chmod +x /rsync

VOLUME [ "/assets" ]

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]

【问题讨论】:

  • 你在代理后面吗?
  • 嘿,从容器中尝试 nslookup。由于域是 .local 我认为您需要将其添加到 etc/hosts
  • @ΦXocę웃Пepeúpaツ 不,我不是。如果我卷曲任何东西都很完美。只有当我卷曲在其他容器中运行的服务的 url 时;收到此错误!此外,如果我从浏览器访问这些,一切都很顺利。
  • @MuhammadHasan 嘿,我已经在 private/etc/hosts 中添加了 gitea.local,这就是我可以在浏览器中毫无问题地访问它们的方式。
  • 好的。所以我做了一个小实验。从容器内 ping abc.com。一旦失败,我使用 echo "127.0.0.1 abc.com" >> /etc/hosts 编辑了 /etc/hosts 文件。之后,ping 开始命中容器本身。如果您可以从容器内 ping 您的域并且它解析为正确的 IP,那么可以排除这种情况。但如果它无法解析到实际的 ip,那么这可能是真正的根本原因。

标签: docker kubernetes dockerfile docker-for-mac gitea


【解决方案1】:

我测试了你的 dockerfile,结果如下

由于您遇到的唯一问题是 git pull,因此我选择仅使用以下几行。

从构建中注意到,向 /etc/hosts 添加条目是如何对以下命令生效的。 如果问题仍然存在,那么我建议您开始查看 gitea 容器的日志。

【讨论】:

  • 感谢您的努力。但它在 docker mac 中不起作用。其实需求很简单,但也很复杂。我在 mac 中有 docker 并激活了它附带的 kubernetes 插件。我安装了 gitea 并添加了 127.0.0.1 gitea.local 没有问题,我可以从浏览器访问它。拉,推一切正常。现在我开始制作一个 docker 文件,从 gitea 中提取一些代码,但是在 docker build 期间,根本没有检测到 gitea.local。
  • @prem,尝试在构建命令中使用 --add-host=google.com:127.0.0.1。它在ubuntu中对我有用。只需更换 dns 和 ip。
猜你喜欢
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 2016-02-21
  • 2014-03-17
  • 2019-12-11
  • 2021-05-01
  • 1970-01-01
相关资源
最近更新 更多