Docker Swarm 编排及部署 PostGIS,并操作 GIS 数据
目录
postgis 镜像的基础是 PostgreSql,所以我们部署了 postgis 镜像也就意味着有了 PostgreSql 数据库,在Docker Hub上已经有人为我们构建好了,我们拉取配置即可使用。
Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker 主机上的各种 Docker 资源。相较与 k8s(Kubernetes), Swarm 的功能也更少一些。但是 Docker 公司已经同时支持了 Swarm 和k8s。 Swarm 的基本架构如下图所示,
Docker stack 是一组有关服务的管理组合,是 Docker 关系层级中最高的一级,其作用主要是编排及管理服务(Service)。
目录及文件创建
创建目录
创建的目录用来做容器的数据存储,因为容器秉承的是用完即毁的理念,所以我们应该将我们的数据放在容器之外,生产环境之中,方便下次使用。
$ mkdir pgadmin_data && mkdir postgres_data # pgadmin_data 存储pgadmin的登录即数据库链接信息, postgres_data 存储数据库生产数据
$ tree
.
├── deploy
├── docker-compose.yml
├── pgadmin_data
└── postgres_data
编写 docker-compose.yml 文件
此次部署我们用到容器的编排,所以会有 deploy 里面的各种信息,若有不理解的,还请移步 Docker Compose。
version: '3'
services:
postgis:
image: kartoza/postgis:9.6-2.4
ports:
- "5432:5432"
environment:
POSTGRES_USER: sde
POSTGRES_PASS: sde
POSTGRES_DBNAME: gis
ALLOW_IP_RANGE: 0.0.0.0/0
volumes:
- ./postgres_data:/var/lib/postgresql
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
update_config:
parallelism: 1
delay: 10s
placement:
constraints:
- node.role == manager
pgadmin:
image: chorss/docker-pgadmin4
ports:
- "8888:5050"
environment:
PGADMIN_SETUP_EMAIL: guzhongren@live.cn
PGADMIN_SETUP_PASSWORD: 000000
volumes:
- ./pgadmin_data:/data
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
update_config:
parallelism: 1
delay: 10s
placement:
constraints:
- node.role == manager
swarm 初始化及镜像部署
docker swarm 初始化
$ docker swarm init
Swarm initialized: current node (bvz81updecsj6wjz393c09vti) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx \
172.17.0.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
获取及部署镜像
编写启动脚本
转载自:https://blog.csdn.net/weixin_40581617/article/details/80496747