堆栈:泊坞窗+ Nginx + Postgres + Django数据丢失

时间:2019-09-30 14:11:41

标签: django database postgresql docker

我有几个Digital Ocean Drops(5 $)用django和postgres(image mdillon / postgis)托管docker,但是自2周前以来,我随机丢失了其中7个的数据。在所有这些Droplet中,Postgres数据库都位于一个卷中,但是即使如此,它也会丢失所有django表并返回到默认状态。这些小滴中的一些已经工作了几个月,而另一些已经工作了几天。它们都具有相同的docker-compose.yml:

version: '2'

services:
  nginx:
    build: './docks/nginx/.'
    ports:
      - '80:80'
      - "443:443"
    volumes:
      - letsencrypt_certs:/etc/nginx/certs
      - letsencrypt_www:/var/www/letsencrypt
    volumes_from:
      - web:ro
    depends_on:
      - web

  web:
    build: './sources/.'
    image: 'websource'
    ports:
      - '127.0.0.1:8000:8000'
    env_file: '.env'
    command: '/venv/bin/gunicorn project.wsgi:application -k gevent -w 3 -b :8000 --worker-connections=1000 --reload --capture-output --enable-stdio-inheritance --log-level=debug --access-logfile=- --log-file=-'
    volumes:
      - 'cachedata:/cache'
      - 'mediadata:/media'
      - 'staticdata:/static'
    depends_on:
      - postgres
      - redis

  celery_worker:
    image: 'websource'
    env_file: '.env'
    command: 'python -m celery -A project worker -l debug'
    volumes_from:
      - web
    depends_on:
      - web

  celery_beat:
    container_name: 'celery_beat'
    image: 'websource'
    env_file: '.env'
    command: 'python -m celery -A pinwins beat --pidfile= -l debug'
    volumes_from:
      - web
    depends_on:
      - web

  postgres:
    container_name: 'postgres'
    image: 'mdillon/postgis'
    ports:
      - '5432:5432'
    volumes:
      - 'pgdata:/var/lib/postgresql/data/'

  redis:
    container_name: 'redis'
    image: 'redis:3.2.0'
    ports:
      - '127.0.0.1:6379:6379'
    volumes:
      - 'redisdata:/data'

volumes:
  pgdata:
  redisdata:
  cachedata:
  mediadata:
  staticdata:
  letsencrypt_certs:
  letsencrypt_www:

和Dockerfile。

FROM python:3.7-alpine

RUN apk add \
  --no-cache \
  --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
  --repository http://dl-cdn.alpinelinux.org/alpine/edge/main \
  gdal gdal-dev

# Pillow dependencies
RUN apk add jpeg-dev zlib-dev py-pip python-dev build-base

ADD requirements.txt /requirements.txt
RUN set -ex \
    && apk add --no-cache --virtual .build-deps \
            gcc \
            make \
            libc-dev \
            musl-dev \
            linux-headers \
            pcre-dev \
            postgresql-dev \
    && pyvenv /venv \
    && /venv/bin/pip install -U pip \
    && LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "/venv/bin/pip install --no-cache-dir -r /requirements.txt" \
    && runDeps="$( \
            scanelf --needed --nobanner --recursive /venv \
                    | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
                    | sort -u \
                    | xargs -r apk info --installed \
                    | sort -u \
    )" \
    && apk add --virtual .python-rundeps $runDeps \
    && apk del .build-deps

RUN apk add  --no-cache ffmpeg

RUN mkdir /code/
WORKDIR /code/
ADD . /code/

CMD source /venv/bin/activate

EXPOSE 8000

我试图访问pgdata卷,但是我不确定在哪里搜索数据(如果有的话)。您有任何线索为什么会发生这种情况吗?我可以管理数据丢失,但是我想防止它再次发生。

0 个答案:

没有答案