2016-09-15 30 views
1

我正在尝试使用BitBucket管道在专用BitBucket回购库上构建Django应用程序的自动化测试。如何在BitBucket管道上使用Docker来测试需要PostGIS的Django应用程序?

我已经完成所有测试,可以使用./manage.py test或使用tox运行。这在当地正常工作,测试构建(临时)PostGIS测试数据库。所有requirementst.txt都需要PostGIS和gdal之类的东西来正确安装。

我在找Docker镜像时遇到了问题,Docker镜像在Docker上给了我一个完整的Python + PostGIS/gdal等堆栈,而且我缺乏自己构建它的技能。

我失败attemps都记录在GitHub上: https://github.com/zostera/docker-django-ci

有人能指出我在正确的方向(教程)或者是帮助我工作的例子吗?

+0

管道似乎在这方面的时刻相当有限。 BB _seems_依靠你将它们烘焙到你的Docker镜像中,这看起来像是反模式(对我来说)。 –

回答

0

我们最近想通了,并与为Python,Django的,Postgres的,PotGIS和一些其他的东西发表支持我们自己的码头工人的形象。其他CI服务通常支持外部服务(Postgres的,elasticsearch,Redis的等等),你可以从你的测试使用 -

https://github.com/zostera/docker-django-ci

1

我写了一个详细的一篇关于Building, Testing and Deploying Django App with Bitbucket Pipelines

它可以是一个良好的开端,在PostGIS扩展它,我将指向您在正确的方向。除了这篇文章外,我们还公开了源代码Dockerfiles,您可以扩展它以支持PostGIS。

您需要安装PostGIS的很好的教程,例如尝试this one

开始与centos7-postgresql9.4 Dockerfile,和前右VOLUME行添加安装PostGIS的命令:

... 

# install PostGIS 
RUN yum -y install postgis2_94 postgis2_94-client 

VOLUME ["/var/lib/pgsql/9.4"] 

最后,您必须启用数据库扩展。该代码添加到start_postgres.sh

if [ -n "${POSTGRESQL_DATABASE}" ]; then 
    echo "Creating database \"${POSTGRESQL_DATABASE}\"..." 
    sudo -u postgres psql -c "CREATE DATABASE \"${POSTGRESQL_DATABASE}\" OWNER \"${POSTGRESQL_USER}\";" 
    # create db gistest, connect to db gistest and create postgis extension 
    sudo -u postgres psql -c "CREATE DATABASE gistest;\c gistest;CREATE EXTENSION postgis;" 
fi 
相关问题