У меня есть следующий файл 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
и Dockerfile для контейнера API выглядит следующим образом:
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 в том же каталоге, из которого я выпускаю docker-compose, с COMPOSE_HTTP_TIMEOUT=8000
, но это тоже не сработало. Я ищу помощь и предложения относительно того, что мне нужно сделать, чтобы мой контейнер API продолжал работать.
Я знаю, что --verbose
может быть выдано с помощью docker-compose, однако я не уверен, что мне следует искать в выводе, который это производит.