如何使用 helm 图表将 docker 个容器端口绑定到主机

How to bind docker container ports to the host using helm charts

我正在为 golang 编写一个简单的 docker 文件,我仍在熟悉 docker 所以我知道我想做什么,只是不知道如何去做:

我现在(下)所拥有的是暴露端口 8080,但我想暴露端口 80 但将其转发到端口 8080。

我知道我可以通过 docker run -p 来完成,但我想知道是否可以通过 Dockerfile 或其他方式进行设置。我正在尝试找到如何通过 Helm 做到这一点。

Dockerfile:

FROM scratch

COPY auth-service /auth-service

EXPOSE 8080

CMD ["/auth-service","-logtostderr=true", "-v=-1"]

EXPOSE 通知 Docker 容器在运行时侦听指定的网络端口,但实际上并不使端口可访问。正如您已经提到的,只有 -p 会这样做:

docker run -p :$HOSTPORT:$CONTAINERPORT

或者您可以选择 docker-compose 文件,额外的文件也可以为您做这件事:

version: "2"
services:
  my_service:
    build: .
    name: my_container_name
    ports:
      - 80:8080
    .....

编辑:

如果您使用的是 helm,您只需使用公开的 docker 端口作为您的 targetPort :

apiVersion: v1
kind: Service
metadata:
  name: {{ template "fullname" . }}
  labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
  type: {{ .Values.service.type }}
  ports:
  - port: {{ .Values.service.externalPort }}
    targetPort: {{ .Values.service.internalPort }} #8080
    protocol: TCP
    name: {{ .Values.service.name }}
  selector:
    app: {{ template "fullname" . }}