首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于nginx的码头图像为什么拒绝VSCode中的连接

基于nginx的码头图像为什么拒绝VSCode中的连接
EN

Stack Overflow用户
提问于 2022-07-14 07:30:56
回答 1查看 180关注 0票数 0

考虑以下设置:

devcontainer.json

代码语言:javascript
复制
{
  "name": "Deputy devcontainer",
  "dockerComposeFile": "docker-compose.yml",
  "service": "go-development",
  "settings": {
    "go.toolsManagement.checkForUpdates": "local",
    "go.useLanguageServer": true,
    "go.gopath": "/go"
  },
  "extensions": [
    "golang.Go",
    "gitlab.gitlab-workflow",
    "GitHub.copilot",
    "eamodio.gitlens",
    "zxh404.vscode-proto3",
    "bungcip.better-toml"
  ],
  "workspaceFolder": "/workspace",
  "remoteUser": "vscode"
}

docker-compose.yml

代码语言:javascript
复制
version: '3'

services:
  go-development:
    image: my-custom-docker-repository/go-development:latest
    command: /bin/sh -c "while sleep 1000; do :; done"
    volumes:
      - ..:/workspace:cached
      - ./deputy-cli-configuration.toml:/home/vscode/.deputy/configuration.toml
    user: vscode

  deputy-package-server:
    image: my-custom-docker-repository/deputy-package-server:latest
    ports:
      - "8080:8080"
    volumes:
      - ./deputy-packages:/var/opt/deputy/deputy-package-server/package
      - ./deputy-repository:/var/opt/deputy/deputy-package-server/repository
    environment:
      - RUST_LOG=debug

  index-repository:
    image: my-custom-docker-repository/deputy-repository-server
    volumes:
      - ./deputy-repository/.git:/srv/git/index.git
    ports:
      - "8082:80"

Dockerfile for index-repository

代码语言:javascript
复制
FROM teamfruit/nginx-fcgiwrap

RUN apt-get update && apt-get upgrade -y
RUN apt-get install git-core fcgiwrap -y
COPY nginx.conf /etc/nginx/conf.d/default.conf

nginx.conf in index-repository

代码语言:javascript
复制
server {
    listen       80;

    location ~ /git(/.*) {
        client_max_body_size            0;

        fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
        include       fastcgi_params;

        fastcgi_param   GIT_HTTP_EXPORT_ALL   "";
        fastcgi_param   GIT_PROJECT_ROOT    /srv/git;
        fastcgi_param   PATH_INFO           $1;
        fastcgi_pass   unix:/var/run/fcgiwrap.socket;
    }
}

Dockerfile for go-development

代码语言:javascript
复制
FROM vscode/devcontainers/go

RUN apt-get update && apt-get upgrade -y
RUN apt-get install protobuf-compiler make debhelper dpkg-dev -y
RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
RUN chmod 777 -R /go/pkg

当运行vscode-devcontainer时,git clone http://index-repository/git/index.git是不可能的,这在connection refused中失败。

但是,当我试图直接在index-repository或主机中克隆时,这些命令就会成功。此外,连接到deputy-package-server (一个简单的锈菌网络服务器)工作,没有任何问题。

我还可以从tcpdump中看到请求实际上到达了nginx-container

我还使用dig来验证dns不是问题。

到目前为止,我真的很困惑为什么这种联系总是被拒绝。我怀疑这个问题可能存在于nginx配置的某个地方,但无法说明在哪里。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 08:15:53

您正在映射端口"8082:80",因此您应该通过http://index-repository:8082http://localhost:8082 isntead访问index-repository容器。

如果您想通过域名index-repository访问存储库服务器容器,您应该公开存储库服务器容器的端口80 (主机名将与服务id一样默认在码头网络中,例如。index-repository)。

然后,dev容器可以以http://index-repository:80的形式访问它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72976792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档