gpt4 book ai didi

docker - golang 程序在 docker 之外运行良好,但在 dockerized 时以 0 退出

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:58 28 4
gpt4 key购买 nike

我有以下 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,但这些都没有帮助。我还尝试在发出 docker-compose up 的同一目录中创建一个 .env 文件,其中包含 COMPOSE_HTTP_TIMEOUT=8000 但这也没有用。我正在寻求帮助和建议,以了解我需要做什么才能让我的 api 容器保持正常运行。

我知道 --verbose 可以用 docker-compose 发布,但是我不确定我应该在它产生的输出中寻找什么。

最佳答案

我终于在我的代码中找到了这个问题的根源,该代码在我拥有的容器之外工作:

http.ListenAndServe("localhost:8080", mux)

解决方法是简单地删除本地主机,这样我现在就有了:

http.ListenAndServe(":8080", mux)

关于docker - golang 程序在 docker 之外运行良好,但在 dockerized 时以 0 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50191373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com