我有以下docker-compose.yml文件:
version: "3.3"
services:
api:
build: ./api
expose:
- '8080'
container_name: 'api'
ports:
- "8080:8080"
depends_on:
- db
stdin_open: true
tty: true
networks:
- api-net
db:
build: ./db
expose:
- '27017'
container_name: 'mongo'
ports:
- "27017:27017"
networks:
- api-net
networks:
api-net:
driver: bridge
和api容器的Dockerfile如下:
FROM iron/go:dev
RUN mkdir /app
COPY src/main/main.go /app/
ENV SRC_DIR=/app
ADD . $SRC_DIR
RUN go get goji.io
RUN go get gopkg.in/mgo.v2
# RUN cd $SRC_DIR; go build -o main
CMD ["go", "run", "/app/main.go"]
如果我在容器之外运行main.go的代码,它会按预期运行,但是如果我尝试运行容器作为docker-compose的一部分,我会得到一个退出0.我已经看到了stackoverflow上的其他线程建议使用stdin_open和tty,但这些没有帮助。我也尝试在同一目录中创建一个.env文件,我在其中发出了一个与COMPOSE_HTTP_TIMEOUT=8000
组成的docker-compose,但这也没有用。我正在寻找帮助和建议我需要做些什么才能使我的api容器保持稳定。
我知道--verbose
可以使用docker-compose发布,但是我不确定我应该在它产生的输出中寻找什么。
答案 0 :(得分:0)
我终于设法在我的代码中找到了底部,在我的容器之外工作:
http.ListenAndServe("localhost:8080", mux)
解决方法是简单地删除localhost,以便我现在拥有:
http.ListenAndServe(":8080", mux)