我正在为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"]
答案 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" . }}