2015-09-02 1 views
1

Я пытаюсь найти хороший способ заполнить базу данных исходными данными для простого приложения. Я использую учебник от realpython.com в качестве отправной точки. Затем я запускаю простой скрипт python после создания базы данных, чтобы добавить одну запись, но когда я делаю это, данные добавляются несколько раз, хотя я только вызываю script один раз. resultPython-скрипт для добавления данных в postgres docker container выполняется несколько раз

сценарий населения (test.py):

from app import db                                       
    from models import *                                       

    t = Post("Hello 3")                                       
    db.session.add(t)                                       
    db.session.commit() 

редактировать:

Вот докер-Compose файл, который я использую для создания проекта:

web: 
    restart: always 
    build: ./web 
    expose: 
    - "8000" 
    links: 
    - postgres:postgres 
    volumes: 
    - /usr/src/app/static 
    env_file: .env 
    command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app 

nginx: 
    restart: always 
    build: ./nginx/ 
    ports: 
    - "80:80" 
    volumes: 
    - /www/static 
    volumes_from: 
    - web 
    links: 
    - web:web 

data: 
    restart: always 
    image: postgres:latest 
    volumes: 
    - /var/lib/postgresql 
    command: "true" 

postgres: 
    restart: always 
    image: postgres:latest 
    volumes_from: 
    - data 
    ports: 
    - "5432:5432" 

он ссылается два разных файла Dockerfiles:

Dockerfile # 1, который строит App контейнер и 1 строка:

FROM python:3.4-onbuild 

Dockerfile # 2 используется для создания Nginx контейнера

FROM tutum/nginx 
RUN rm /etc/nginx/sites-enabled/default 
ADD sites-enabled/ /etc/nginx/sites-enabled 

edit2:

Некоторые люди полагают, что данные сохраняется в течение нескольких циклов, и это была моя первоначальная мысль. Это не так, поскольку я удаляю все активные контейнеры докеров через докер rm перед тестированием. Кроме того, количество «лишних» данных несовместимо, начиная с 3-6 в нескольких тестах, которые я выполнил до сих пор.

+0

Полный код проекта находится здесь: [Repo] (https://github.com/aleedom/Docker-Testing). Я следую этому [Tutorial] (https://realpython.com/blog/python/dockerizing-flask-with-compose-and-machine-from-localhost-to-the-cloud/). – aleedom

+0

Можете ли вы показать свой файл докеров, ваш докер? – user2915097

+0

@ user2915097 Я обновил сообщение с файлом компоновки докеров, а также двумя файлами Dockerfiles, которые он ссылается. – aleedom

ответ

0

Оказалось, что это ошибка, связанная с использованием команды run в контейнерах с инструкцией «restart: always» в файле docker-compose/Docker. Чтобы решить эту проблему без исправления ошибок, я удалил «перезапуск: всегда» из веб-контейнера.

связанный с этим вопрос: https://github.com/docker/compose/issues/1013

 Смежные вопросы

  • Нет связанных вопросов^_^