容器在没有明显原因或错误的情况下崩溃



我正在尝试使用这些 dockerfile 运行容器:

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

Dockerfile:

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服务在我将其剥离后立即退出。 通常,我会猛烈抨击容器并查看日志,但容器崩溃的事实立即排除了这种选择。

我能做什么?

尝试 tty: true 对于 docker-compose 文件中的用户

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

感谢您@Shmuel的更正。

你可以通过以下方式查看 stdout, stderr of docker 容器

docker logs <container ID>

或者,正如@David Maze指出的那样,如果您在没有-d选项的情况下docker-compose,stdout/stdrr会在控制台上打印出来。

有关 docker 日志的更多信息:https://docs.docker.com/engine/reference/commandline/logs/

最新更新