2016-09-15 21 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 
相關問題