【发布时间】:2018-09-26 01:48:18
【问题描述】:
所以我有一个 Go 应用程序,我将其部署到一个带有 Ansible 和 Jenkins 管道的 EC2 实例作为 Docker 映像。我有一个图像,我可以使用 Postman 使用 IP 地址和端口号 8080 从主机外部访问它。当我部署新映像时,我无法使用 IP 地址和端口号获得响应。当我 ssh 进入服务器时,我可以使用 localhost 和端口号到达端点。如果我停止该图像并开始第一个图像,我可以再次到达它。
这些图像之间可能存在哪些差异,导致无法再通过 ip 地址访问端点?
我的 Docker 编写文件:
version: '2'
services:
project-1:
image: ...
volumes:
- /var/log:/var/log
network_mode: host
environment:
- ...
cpu_shares: 1236
mem_limit: 2619m
我的 Docker 文件:
FROM golang:1.10
WORKDIR /go/src/...
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
EXPOSE 8080-8080
CMD ./run.sh
我还尝试从 Docker Compose 文件中删除 network_mode 并将其替换为如下所示的端口,但没有成功:
ports:
- "0.0.0.0:8080:8080"
【问题讨论】:
-
您引用了
ports:块引用端口 8000,但您的问题和 Dockerfile 说 8080。这是问题中的错字还是您的设置? AWS 安全组或主机 iptables 是否阻止了连接? -
这是一个错字,已修复。我将研究一个安全组并托管 iptables 的可能性。
标签: docker go amazon-ec2 ansible