使用Django和docker-compose在外部库上使用不同的迁移文件名

时间:2018-03-16 04:42:42

标签: django docker wagtail django-migrations

我有一个项目,我最近添加了新的外部库。 因此,我通过运行

重新构建我的docker镜像以包含此库

docker-compose build

这是我的DockerFile

FROM python:3.6
ENV PYTHONUNBUFFERED 1

RUN apt-get update && apt-get install -y \
    rabbitmq-server \
    gettext \
    xmlsec1

# Chinese PYPI mirror
RUN mkdir /root/.pip/
#COPY ./pip-china.conf /root/.pip/pip.conf

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

RUN DATABASE_URL=None python3 manage.py collectstatic --noinput
RUN DATABASE_URL=None python3 manage.py compilemessages

这是我的docker-compose文件

version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=db
    ports:
      - "5432:5432"
  elasticsearch:
    ports:
      - "9200:9200"
    environment:
      - http.host=0.0.0.0
      - transport.host=127.0.0.1
    volumes:
      - ./custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  web:
    build: .
    command: python3 manage.py runserver_plus 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "80:8000"
    environment:
      - DJANGO_DB_NAME=db
      - AWS_STORAGE_BUCKET_NAME=db
      - BUCKET_ACCESS_KEY_ID=key
      - BUCKET_SECRET_ACCESS_KEY=key
      - MEDIA_HOST=cdnlink

创建新的docker镜像后,我在模型上添加了新的字段

运行迁移

所以它生成了这个migration文件。

# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-03-16 02:46
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        ('wagtailvideos', '0010_auto_20180316_0246'),
        ('pages', '0117_auto_20180315_0905'),
    ]

    operations = [
        migrations.AddField(
            model_name='articlepage',
            name='header_video',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailvideos.Video'),
        ),
    ]

到目前为止一切都很好我的本地作品完全完美。但是如果在登台/生产服务器上构建我的docker镜像,它会让我找不到迁移文件。 ('wagtailvideos', '0010_auto_20180316_0246')

所以我必须在其他服务器上手动运行makemigrations,这会给我不同的迁移文件名 ('wagtailvideos', '0010_auto_20180316_0276')然后它有效。例如,0246变为0276

但事情是......它影响了我的本地和制作之间的一致性,我的CI脚本因此而无法工作,我也不想在生产服务器上进行手动更改......

所以问题是如何在所有服务器中将第三方库迁移文件命名为相同?所以我不会有任何冲突

0 个答案:

没有答案