【问题标题】:How do I use Docker on BitBucket pipelines to test a Django app that needs PostGIS?如何在 BitBucket 管道上使用 Docker 来测试需要 PostGIS 的 Django 应用程序?
【发布时间】:2016-09-15 08:17:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 管道目前在这方面似乎非常有限 - 其他 CI 服务通常支持您可以从测试中使用的外部服务(postgres、elasticsearch、redis 等)。 BB 似乎依赖于您将它们烘焙到您的 Docker 映像中,这似乎是一种反模式(对我而言)。

标签: python django docker bitbucket postgis


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-14
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2017-02-09
      • 2018-08-29
      • 2016-01-01
      相关资源
      最近更新 更多