我有一个项目,我最近添加了新的外部库。 因此,我通过运行
重新构建我的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脚本因此而无法工作,我也不想在生产服务器上进行手动更改......
所以问题是如何在所有服务器中将第三方库迁移文件命名为相同?所以我不会有任何冲突