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

时间:2018-03-08 02:37:46

标签: docker dockerfile kubernetes-helm

我正在为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"]

1 个答案:

答案 0 :(得分:3)

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" . }}