如何在 BitBucket 管道上使用 Docker 来测试需要 PostGIS 的 Django 应用程序?

How do I use Docker on BitBucket pipelines to test a Django app that needs PostGIS?

我正在尝试使用 BitBucket 管道在私人 BitBucket 存储库上对 Django 应用程序构建自动化测试。

我已准备好所有测试,它们可以是 运行 使用 ./manage.py test 或使用 tox。这在本地运行良好,测试构建(临时)PostGIS 测试数据库。 PostGIS 和 gdal 之类的东西是所有 requirementst.txt 正确安装所必需的。

我在寻找 Docker 图像时遇到问题,该图像为我提供了完整的 Python + PostGIS/gdal 等堆叠在 Docker 上,我缺乏构建的技能我自己。

我的失败尝试记录在 GitHub 上: https://github.com/zostera/docker-django-ci

有人可以为我指出正确的方向(教程)或者可以帮助我解决一个工作示例吗?

我已经写了一篇关于Building, Testing and Deploying Django App with Bitbucket Pipelines

的详细post

使用 PostGIS 扩展它可能是一个好的开始,我会为您指明正确的方向。除了 post,我们还开源了 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

我们最近弄明白了,并发布了我们自己的 Docker 图像,支持 Python、Django、Postgres、PotGIS 和其他一些东西。

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