контейнер падает без явной причины или ошибки - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь запустить контейнер с этими файлами Docker:

docker-compose.yml:

version: '3.7'

services:

  users:
    build:
      context: ./services/users
      dockerfile: Dockerfile
    volumes:
      - './services/users:/usr/src/app'
    ports:
      - 5001:5000
    environment:
      - FLASK_ENV=development
      - APP_SETTINGS=project.config.DevelopmentConfig
      - DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_dev
      - DATABASE_URL_DEPTS=postgres://postgres:postgres@users-db:5432/depts_dev
      - DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test
      - DATABASE_TEST_URL_DEPTS=postgres://postgres:postgres@users-db:5432/depts_test
    depends_on:
      - users-db

  users-db:
    build:
      context: ./services/users/project/db
      dockerfile: Dockerfile
    ports:
      - 5435:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

Файл Docker:

FROM python:3.6.9-slim

RUN apt-get update && \
    apt-get install -y netcat && \
    apt-get clean

WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh

COPY . /usr/src/app

CMD ["/usr/src/app/entrypoint.sh"]

entrypoint.sh:

#!/bin/sh

echo 'Waiting for postgres...'

while ! nc -z users-db 5432; do
  sleep 0.1
done

echo 'PostgreSQL started'

python manage.py run -h 0.0.0.0

Контейнер Postgres работает просто отлично, но служба users завершает работу, как только я его раскручиваю. Обычно я вбиваю контейнер и просматриваю логи, но тот факт, что контейнер сразу падает, исключает это как вариант.

Что я могу сделать?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Попробуйте tty: true для пользователей в файле docker-compose

users:
    build:
      context: ./services/users
      dockerfile: Dockerfile
    volumes:
      - './services/users:/usr/src/app'
    ports:
      - 5001:5000
    tty: true
    .....

0 голосов
/ 07 октября 2019

Спасибо @Shmuel за исправление.

Вы можете просматривать stdout, stderr контейнеров докеров по

docker logs <container ID>

В качестве альтернативы, как указал @David Maze, stdout / stderr выводится на консоль, если вы docker-compose без -d option.

Подробнее о журналах докера: https://docs.docker.com/engine/reference/commandline/logs/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...