postgis 鏡像的基礎是 PostgreSql,因此咱們部署了 postgis 鏡像也就意味着有了 PostgreSql 數據庫,在Docker Hub上已經有人爲咱們構建好了,咱們拉取配置便可使用。node
Swarm 是 Docker 官方提供的一款集羣管理工具,其主要做用是把若干臺Docker主機抽象爲一個總體,而且經過一個入口統一管理這些Docker 主機上的各類 Docker 資源。相較與 k8s(Kubernetes), Swarm 的功能也更少一些。可是 Docker 公司已經同時支持了 Swarm 和k8s。 Swarm 的基本架構以下圖所示,sql
Docker stack 是一組有關服務的管理組合,是 Docker 關係層級中最高的一級,其做用主要是編排及管理服務(Service)。docker
建立的目錄用來作容器的數據存儲,由於容器秉承的是用完即毀的理念,因此咱們應該將咱們的數據放在容器以外,生產環境之中,方便下次使用。數據庫
$ mkdir pgadmin_data && mkdir postgres_data # pgadmin_data 存儲pgadmin的登陸即數據庫連接信息, postgres_data 存儲數據庫生產數據 $ tree . ├── deploy ├── docker-compose.yml ├── pgadmin_data └── postgres_data
這次部署咱們用到容器的編排,因此會有 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
$ 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.
編寫啓動腳本工具