Docker¶
pycsw可用作 Docker图像。图像被寄存在 Docker Hub. 上。
假设已经安装了docker,可以通过发出以下命令来启动和运行pycsw实例:
docker run -p 8000:8000 geopython/pycsw
Docker将从 Docker集线器(如果需要)检索 pycsw 映像,然后在端口8000上启动侦听新容器.
默认配置将运行pycsw, sqlite存储库后端装载来自CITE测试套件的一些测试数据。您可以使用它来测试pycsw。
检查日志¶
Docker映像的默认配置将日志输出到stdout。这是对接容器的常见做法,并使 docker logs
命令检查日志成为可能:
# run a pycsw container in the background
docker run \
--name pycsw-test \
--publish 8000:8000 \
--detach \
geopython/pycsw
# inspect logs
docker logs pycsw-test
注解
为了将pycsw日志发送到标准输出,必须在pycsw配置文件中设置 server.logfile=
。
使用PYCSW管理¶
pycsw-admin
can be executed on a running container by
using docker exec
:
docker exec -ti <running-container-id> pycsw-admin.py -h
运行自定义PysCW容器¶
pycsw 配置¶
可以为pycsw提供自定义配置文件作为绑定安装或作为docker秘密(在docker群集的情况下)。配置文件在 PYCSW_CONFIG
环境变量的值处进行搜索,该环境变量默认为 /etc/pycsw/pycsw.cfg
。
通过绑定安装提供配置文件::
docker run \
--name pycsw \
--detach \
--volume <path-to-local-pycsw.cfg>:/etc/pycsw/pycsw.cfg \
--publish 8000:8000 \
geopython/pycsw
通过docker 机密提供配置文件:
# first create a docker secret with the pycsw config file
docker secret create pycsw-config <path-to-local-pycsw.cfg>
docker service create \
--name pycsw \
--secret src=pycsw-config,target=/etc/pycsw/pycsw.cfg \
--publish 8000:8000
geopython/pycsw
sqlite 存储库¶
默认的数据库存储库是用于运行pycsw测试套件的CITE数据库。Docker卷可以用来指定自定义sqlite数据库路径。它应该安装在 /var/lib/pycsw
:
# first create a docker volume for persisting the database when
# destroying containers
docker volume create pycsw-db-data
docker run \
--volume db-data:/var/lib/pycsw \
--detach \
--publish 8000:8000
geopython/pycsw
PostgreSQL存储库¶
指定PostgreSQL存储库只是用正确的规范配置自定义pycsw.cfg 文件的问题。
查看 pycsw's github repository ,例如 docker-compose/stack文件,该文件将postgis数据库与pycsw实例一起旋转。
用docker建立开发环境¶
使用docker处理pycsw的代码可以实现一个隔离的环境,它有助于确保可重现性,同时使您的基本系统免受pycsw相关依赖项的影响。这可以通过以下方式实现:
- 在本地克隆pycsw的储存库;
- 使用适当的绑定安装启动docker容器。此外,pycsw docker映像支持
reload
标志,当代码发生变化时,该标志将自动重新加载gunicorn web服务器; - 与root用户一起使用
docker exec
安装开发依赖项;
以下说明建立了一个完整工作的开发环境:
# clone pycsw's repo
git clone https://github.com/geopython/pycsw.git
# start a container for development
cd pycsw
docker run \
--name pycsw-dev \
--detach \
--volume ${PWD}/pycsw:/usr/lib/python3.5/site-packages/pycsw \
--volume ${PWD}/docs:/home/pycsw/docs \
--volume ${PWD}/VERSION.txt:/home/pycsw/VERSION.txt \
--volume ${PWD}/LICENSE.txt:/home/pycsw/LICENSE.txt \
--volume ${PWD}/COMMITTERS.txt:/home/pycsw/COMMITTERS.txt \
--volume ${PWD}/CONTRIBUTING.rst:/home/pycsw/CONTRIBUTING.rst \
--volume ${PWD}/pycsw/plugins:/home/pycsw/pycsw/plugins \
--publish 8000:8000 \
geopython/pycsw --reload
# install additional dependencies used in tests and docs
docker exec \
-ti \
--user root \
pycsw-dev pip3 install -r requirements-dev.txt
# run tests (for example unit tests)
docker exec -ti pycsw-dev py.test -m unit
# build docs
docker exec -ti pycsw-dev sh -c "cd docs && make html"
注解
请注意,pycsw映像只使用python 3.5,而且它也不以可编辑模式安装pycsw。因此,不可能使用 tox
.
由于docs目录是从主机绑定到容器中的,所以在构建docs之后,您可以可视化地检查它们的内容,例如,通过运行:
firefox docs/_build/html/index.html