如何防止容器在发生错误时关闭?

时间:2020-07-19 15:51:51

标签: python django docker docker-compose

每次我输入错误或代码中的内容时,容器都会关闭并给我shotel_backend exited with code 1。如何预防呢?

这是Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN pip install pipenv

RUN mkdir /backend
WORKDIR /backend

ADD Pipfile Pipfile.lock /backend/
RUN pipenv install

ADD . /backend/

这里是docker-compose

version: '3'

services:
    backend:
        container_name: shotel_backend
        build: ./backend
        volumes:
            - ./backend/:/backend
        working_dir: /backend/
        command: pipenv run python manage.py runserver 0.0.0.0:8000
        ports:
            - 8000:8000

2 个答案:

答案 0 :(得分:0)

您要做的就是在docker-compose中使用此策略:

restart: always

但是我建议您在代码中查找并修复错误。

编辑:我忘了说这不会阻止关闭容器,它所做的只是在出现错误时自动重新启动它。

答案 1 :(得分:0)

每个docker容器实际上只运行一个主进程-Dockerfile末尾的ENTRYPOINT和/或CMD。

如果您想要重新启动所需的过程而不必完全重新启动容器,那么您将必须使用诸如supervisor之类的过程管理器。

here给出了您正在寻找的更多信息和解决方法。

不过,我仍然建议您首先通过适当的异常处理来防止进程退出。