使用PostgreSQL、db启动和意外关闭Dockerize my Django应用程序

使用PostgreSQL、db启动和意外关闭Dockerize my Django应用程序,django,postgresql,docker,docker-compose,dockerfile,Django,Postgresql,Docker,Docker Compose,Dockerfile,我是Docker的新手,我想将Django应用程序作为容器运行。 我有OSX 10.11.16 El Capitan和Docker Toolbox 19.03.01 这是Dockerfile FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/ 这里是dock

我是Docker的新手,我想将Django应用程序作为容器运行。 我有OSX 10.11.16 El Capitan和Docker Toolbox 19.03.01

这是Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
这里是docker-compose.yml conf

version: '3'

networks:
    mynetwork:
        driver: bridge

services:

  db:
    image: postgres
    ports:
      - "5432:5432"
    networks:
      - mynetwork
    environment:
      POSTGRES_USER: xxxxx
      POSTGRES_PASSWORD: xxxxx

  web:
    build: .
    networks:
      - mynetwork
  links:
      - db
    environment:
      SEQ_DB: cath_local
      SEQ_USER: xxxxx
      SEQ_PW: xxxxx
      PORT: 5432
      DATABASE_URL: postgres://xxxxx:xxxxx@db:5432/cath_local

    command: python manage.py runserver 0.0.0.0:8000

    volumes:
      - .:/code

    ports:
      - "8000:8000"

    depends_on:
      - db
在这一点上,我认为:

docker-compose up
但我的postgreSQL数据库似乎没有错误地启动和停止,如果我在docker中检查数据库日志,我会得到:

2019-09-17 03:29:37.296 UTC[1]日志:侦听IPv4地址“0.0.0.0”,端口5432 2019-09-17 03:29:37.301 UTC[1]日志:侦听IPv6地址“:”,端口5432 2019-09-17 03:29:37.304 UTC[1]日志:在Unix套接字上侦听“/var/run/postgresql/.s.PGSQL.5432” 2019-09-17 03:29:37.617 UTC[21]日志:数据库系统在2019-09-17 03:28:33 UTC关闭

2019-09-17 03:29:37.795 UTC[1]日志:数据库系统已准备好接受连接 2019-09-17 03:30:11.297 UTC[1]日志:收到智能关机请求 2019-09-17 03:30:11.409 UTC[1]日志:后台工作程序“逻辑复制启动器”(PID 27)已退出,退出代码为1 2019-09-17 03:30:11.411 UTC[22]日志:正在关闭 2019-09-17 03:30:11.463 UTC[1]日志:数据库系统已关闭

我的postgreSQL的启动和停止是什么


提前非常感谢

根据PostgreSQL官方Docker映像上的文档,您需要在数据库服务的
Docker compose.yaml
上添加重启参数

执行
docker compose up时
可以看到数据库在保持稳定之前重新启动两次,也可以向
docker compose.yaml
中添加一些卷以保存数据

version: '3'

networks:
    mynetwork:
        driver: bridge

services:

  db:
    image: postgres
    restart: always
    ports:
      - "5432:5432"
    networks:
      - mynetwork
    environment:
      POSTGRES_USER: xxxxx
      POSTGRES_PASSWORD: xxxxx
    volumes:
      - ./data:/var/lib/postgresql/data

  web:
    build: .
    networks:
      - mynetwork
  links:
      - db
    environment:
      SEQ_DB: cath_local
      SEQ_USER: xxxxx
      SEQ_PW: xxxxx
      PORT: 5432
      DATABASE_URL: postgres://xxxxx:xxxxx@db:5432/cath_local

    command: python manage.py runserver 0.0.0.0:8000

    volumes:
      - .:/code

    ports:
      - "8000:8000"

    depends_on:
      - db

我尝试了您的配置,但服务在重新启动2次后继续关闭您是否尝试仅使用数据库运行docker-compose.yaml?为了测试我的响应,我所做的是删除您的web服务并执行executre
docker compose up