├── assets └── images │ └── button.png ├── nginx └── latest │ └── stack.yml ├── prom └── prometheus │ └── latest │ └── stack.yml ├── ghost └── latest │ └── stack.yml ├── jenkins ├── latest │ └── stack.yml └── jenkins │ └── lts │ └── stack.yml ├── alpeware └── chrome-headless-trunk │ └── latest │ └── stack.yml ├── neo4j └── latest │ └── stack.yml ├── redis └── latest │ └── stack.yml ├── google └── cadvisor │ └── latest │ └── stack.yml ├── elasticsearch └── latest │ └── stack.yml ├── mongo └── latest │ └── stack.yml ├── postgres └── latest │ └── stack.yml ├── mariadb └── latest │ └── stack.yml ├── mysql └── latest │ └── stack.yml ├── ozlerhakan └── rapid │ └── latest │ └── stack.yml ├── portainer └── portainer │ └── latest │ └── stack.yml ├── docker └── ucp │ └── latest │ └── stack.yml ├── coralproject └── talk │ ├── README.md │ └── stack.yml ├── registry └── latest │ └── stack.yml ├── wordpress └── latest │ └── stack.yml ├── microweber └── microweber │ └── latest │ └── stack.yml ├── swarmpit └── swarmpit │ └── latest │ └── stack.yml ├── README.md ├── servicebot └── latest │ └── stack.yml └── janatzend └── particulummobile └── latest └── stack.yml /assets/images/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/play-with-docker/stacks/HEAD/assets/images/button.png -------------------------------------------------------------------------------- /nginx/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: nginx 6 | ports: 7 | - "8080:80" 8 | -------------------------------------------------------------------------------- /prom/prometheus/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: prom/prometheus:latest 6 | ports: 7 | - "80:9090" 8 | -------------------------------------------------------------------------------- /ghost/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: ghost:latest 6 | ports: 7 | - "2368:2368" 8 | restart: always 9 | -------------------------------------------------------------------------------- /jenkins/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: jenkins:latest 6 | ports: 7 | - "8080:8080" 8 | restart: always 9 | -------------------------------------------------------------------------------- /jenkins/jenkins/lts/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: jenkins/jenkins:lts 6 | ports: 7 | - "8080:8080" 8 | restart: always 9 | -------------------------------------------------------------------------------- /alpeware/chrome-headless-trunk/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | chrome-headless-trunk: 4 | image: alpeware/chrome-headless-trunk 5 | volumes: 6 | - /data 7 | ports: 8 | - "9222:9222" 9 | -------------------------------------------------------------------------------- /neo4j/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | 3 | services: 4 | neo4j: 5 | restart: 'always' 6 | image: neo4j 7 | volumes: 8 | - /data 9 | - /logs 10 | ports: 11 | - '7474:7474' 12 | - '7687:7687' 13 | -------------------------------------------------------------------------------- /redis/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | redis: 5 | image: redis 6 | web: 7 | image: transcranial/redmon 8 | command: redmon -r redis://redis 9 | ports: 10 | - "4567:4567" 11 | 12 | -------------------------------------------------------------------------------- /google/cadvisor/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | advisor: 4 | image: google/cadvisor:latest 5 | volumes: 6 | - /:/rootfs:ro 7 | - /var/run:/var/run 8 | - /sys:/sys:ro 9 | - /graph:/var/lib/docker 10 | ports: 11 | - "8080:8080" 12 | -------------------------------------------------------------------------------- /elasticsearch/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | services: 3 | elasticsearch: 4 | image: elasticsearch:latest 5 | ports: 6 | - "9200:9200" 7 | - "9300:9300" 8 | environment: 9 | ES_NET_HOST: "0.0.0.0" 10 | kibana: 11 | image: kibana:latest 12 | restart: "always" 13 | ports: 14 | - "5601:5601" 15 | -------------------------------------------------------------------------------- /mongo/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | services: 3 | mongo: 4 | image: mongo 5 | mexpress: 6 | image: mongo-express 7 | depends_on: 8 | - "mongo" 9 | restart: "always" 10 | ports: 11 | - "8081:8081" 12 | environment: 13 | ME_CONFIG_OPTIONS_EDITORTHEME: ambiance 14 | 15 | -------------------------------------------------------------------------------- /postgres/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | services: 3 | postgres: 4 | image: postgres 5 | volumes: 6 | - /var/lib/postgresql/data 7 | pgweb: 8 | image: donnex/pgweb 9 | command: -s --url postgres://postgres@postgres:/?sslmode=disable --bind=0.0.0.0 10 | depends_on: 11 | - postgres 12 | restart: "always" 13 | ports: 14 | - '8080:8081' 15 | -------------------------------------------------------------------------------- /mariadb/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | services: 3 | mysql: 4 | image: mariadb 5 | environment: 6 | MYSQL_ALLOW_EMPTY_PASSWORD: "yes" 7 | volumes: 8 | - /var/lib/mysql 9 | phpmyadmin: 10 | image: phpmyadmin/phpmyadmin 11 | links: 12 | - mysql 13 | environment: 14 | PMA_HOST: mysql 15 | PMA_PORT: 3306 16 | PMA_USER: root 17 | ports: 18 | - '8080:80' 19 | -------------------------------------------------------------------------------- /mysql/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | services: 3 | mysql: 4 | image: mysql 5 | environment: 6 | MYSQL_ALLOW_EMPTY_PASSWORD: "yes" 7 | volumes: 8 | - /var/lib/mysql 9 | phpmyadmin: 10 | image: phpmyadmin/phpmyadmin 11 | links: 12 | - mysql 13 | environment: 14 | PMA_HOST: mysql 15 | PMA_PORT: 3306 16 | PMA_USER: root 17 | ports: 18 | - '8080:80' 19 | -------------------------------------------------------------------------------- /ozlerhakan/rapid/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | rapid: 5 | image: ozlerhakan/rapid:latest 6 | ports: 7 | - '8080:8080' 8 | networks: 9 | - rapid-net 10 | volumes: 11 | - /var/run/docker.sock:/var/run/docker.sock 12 | deploy: 13 | mode: replicated 14 | replicas: 1 15 | placement: 16 | constraints: [node.role == manager] 17 | 18 | networks: 19 | rapid-net: 20 | -------------------------------------------------------------------------------- /portainer/portainer/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | portainer: 5 | image: portainer/portainer:latest 6 | ports: 7 | - '9000:9000' 8 | networks: 9 | - portainer-net 10 | volumes: 11 | - /var/run/docker.sock:/var/run/docker.sock 12 | deploy: 13 | mode: replicated 14 | replicas: 1 15 | placement: 16 | constraints: [node.role == manager] 17 | 18 | networks: 19 | portainer-net: 20 | -------------------------------------------------------------------------------- /docker/ucp/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | ucp-installer: 5 | image: alpine 6 | command: docker run --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:2.1.4 install --force-insecure-tcp --san *.${PWD_HOST_FQDN} --admin-username admin --admin-password admin1234 7 | volumes: 8 | - /var/run/docker.sock:/var/run/docker.sock 9 | - /usr/local/bin/docker:/usr/local/bin/docker 10 | deploy: 11 | restart_policy: 12 | condition: 'none' 13 | -------------------------------------------------------------------------------- /coralproject/talk/README.md: -------------------------------------------------------------------------------- 1 | # Talk 2 | A better commenting experience from Mozilla, The New York Times, and the Washington Post. 3 | 4 | [![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/play-with-docker/stacks/master/coralproject/talk/stack.yml&stack_name=talk) 5 | 6 | After it finishes installing everything wait until the `5000` badge shows up, click and add to the path `/admin/install` to configure your new talk playground :) 7 | -------------------------------------------------------------------------------- /registry/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | reg-srv: 5 | image: registry:latest 6 | ports: 7 | - 5000:5000 8 | networks: 9 | reg-net: 10 | aliases: 11 | - reg-serv 12 | reg-web: 13 | image: hyper/docker-registry-web 14 | ports: 15 | - 8080:8080 16 | environment: 17 | - REGISTRY_URL=http://reg-serv:5000/v2 18 | - REGISTRY_NAME=localhost:5000 19 | networks: 20 | - reg-net 21 | 22 | networks: 23 | reg-net: 24 | driver: overlay 25 | -------------------------------------------------------------------------------- /wordpress/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | db: 4 | image: mysql:5.7 5 | volumes: 6 | - db_data:/var/lib/mysql 7 | restart: always 8 | environment: 9 | MYSQL_ROOT_PASSWORD: somewordpress 10 | MYSQL_DATABASE: wordpress 11 | MYSQL_USER: wordpress 12 | MYSQL_PASSWORD: wordpress 13 | 14 | wordpress: 15 | depends_on: 16 | - db 17 | image: wordpress:latest 18 | ports: 19 | - "8000:80" 20 | restart: always 21 | environment: 22 | WORDPRESS_DB_HOST: db:3306 23 | WORDPRESS_DB_USER: wordpress 24 | WORDPRESS_DB_PASSWORD: wordpress 25 | volumes: 26 | db_data: 27 | -------------------------------------------------------------------------------- /microweber/microweber/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | microweber: 4 | image: microweber/microweber 5 | environment: 6 | - DB_USER=microweber 7 | - DB_PASS=microweber 8 | - DB_NAME=microweber 9 | - DB_ENGINE=mysql 10 | - DB_HOST=db 11 | - DB_PREFIX=mw_ 12 | ports: 13 | - "8080:80" 14 | restart: always 15 | db: 16 | image: mysql:5.7 17 | volumes: 18 | - db_data:/var/lib/mysql 19 | restart: always 20 | environment: 21 | MYSQL_ROOT_PASSWORD: microweber 22 | MYSQL_DATABASE: microweber 23 | MYSQL_USER: microweber 24 | MYSQL_PASSWORD: microweber 25 | volumes: 26 | db_data: 27 | -------------------------------------------------------------------------------- /coralproject/talk/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | talk: 4 | image: coralproject/talk:latest 5 | restart: always 6 | ports: 7 | - "5000:5000" 8 | depends_on: 9 | - mongo 10 | - redis 11 | environment: 12 | - TALK_MONGO_URL=mongodb://mongo/talk 13 | - TALK_REDIS_URL=redis://redis 14 | - TALK_JWT_SECRET=foobar 15 | - "TALK_PLUGINS_JSON={}" 16 | mongo: 17 | image: mongo:3.2 18 | restart: always 19 | volumes: 20 | - mongo:/data/db 21 | redis: 22 | image: redis:3.2 23 | restart: always 24 | volumes: 25 | - redis:/data 26 | volumes: 27 | mongo: 28 | external: false 29 | redis: 30 | external: false 31 | -------------------------------------------------------------------------------- /swarmpit/swarmpit/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | app: 5 | image: swarmpit/swarmpit:latest 6 | environment: 7 | SWARMPIT_DB: http://db:5984 8 | volumes: 9 | - /var/run/docker.sock:/var/run/docker.sock:ro 10 | ports: 11 | - 888:8080 12 | networks: 13 | - net 14 | depends_on: 15 | - db 16 | deploy: 17 | placement: 18 | constraints: 19 | - node.role == manager 20 | db: 21 | image: klaemo/couchdb:2.0.0 22 | volumes: 23 | - db-data:/opt/couchdb/data 24 | networks: 25 | - net 26 | 27 | networks: 28 | net: 29 | driver: overlay 30 | 31 | volumes: 32 | db-data: 33 | driver: local 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker example stacks 2 | 3 | This repository contains a curated list of stacks to showcase the docker images 4 | available in the public docker registry. 5 | 6 | You can simply grab the current examples and run them with [docker stack deploy](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [docker compose](https://docs.docker.com/compose/) 7 | to have a fully functional environments. 8 | 9 | ## Submitting a new stack 10 | 11 | To submit a stack just open a PR against this repo with the following folder structure: 12 | 13 | `////` 14 | 15 | In the case of official repositories, `` is not necessary. If you're submitting a new stack, 16 | make sure the default name is `stack.yml`. 17 | 18 | When submitting new stacks it's important to find an intuitive way to showcase the example you're aiming at. 19 | For example, if adding a stack for a DB, try to also add a web interface container so it's easier to play with it. 20 | 21 | ## RFS (request for stacks) 22 | 23 | This is a list of the stacks we would love to have here: 24 | 25 | - [x] ~~registry~~ 26 | - [x] ~~prometheus~~ 27 | - [x] ~~jenkings~~ 28 | - [ ] rabbitmq 29 | - [ ] memcached 30 | - [ ] cassandra 31 | - [ ] traefik 32 | - [x] ~~ghost~~ 33 | - [ ] telegraf 34 | - [ ] drupal 35 | - [x] neo4j 36 | - [ ] influxdb 37 | - [ ] crate 38 | - [ ] zookeeper 39 | - [ ] etcd 40 | - [ ] couchdb 41 | - [ ] php 42 | - [ ] rocket chat 43 | -------------------------------------------------------------------------------- /servicebot/latest/stack.yml: -------------------------------------------------------------------------------- 1 | #Explanation: 2 | #SMTP_ settings should be uncommented and configured if you want to have servicebot send emails 3 | #CERTIFICATES and the certificate volume should be uncommented when you get SSL certs, enter path to 4 | version: '2' 5 | services: 6 | servicebot: 7 | image: servicebot/servicebot 8 | environment: 9 | # CERTIFICATES: "./ssl/" 10 | POSTGRES_DB_PORT : "5432" 11 | POSTGRES_DB_HOST : "db" 12 | POSTGRES_DB_USER : "servicebot_u" 13 | POSTGRES_DB_PASSWORD : "secret_doggo" 14 | POSTGRES_DB_NAME : "sb_db" 15 | # SMTP_HOST : 'localhost' 16 | # SMTP_USER : 'postmaster@localhost' 17 | # SMTP_PASSWORD : 'password' 18 | # SMTP_PORT : '587' 19 | PORT : "3000" 20 | volumes: 21 | - upload-data:/usr/src/app/uploads 22 | - environment-file:/usr/src/app/env 23 | # - /path/to/ssl/certs/on/server:/usr/src/app/ssl 24 | links: 25 | - db 26 | ports: 27 | - "80:3000" 28 | - "443:3001" 29 | command: ["sh", "-c", "node /usr/src/app/bin/wait-for-it.js db 5432 && npm run-script start"] 30 | db: 31 | image: postgres 32 | environment: 33 | POSTGRES_USER : "servicebot_u" 34 | POSTGRES_PASSWORD : "secret_doggo" 35 | POSTGRES_DB : "sb_db" 36 | volumes: 37 | - db-data:/var/lib/postgresql/data 38 | expose: 39 | - "5432" 40 | volumes: 41 | upload-data: 42 | environment-file: 43 | db-data: 44 | -------------------------------------------------------------------------------- /janatzend/particulummobile/latest/stack.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | 5 | #------------------------------------------------------------------------------- 6 | # Nginx is the webserver for the backend 7 | #------------------------------------------------------------------------------- 8 | nginx: 9 | image: janatzend/particulum-mobile-backend-nginx:latest 10 | links: 11 | - php 12 | ports: 13 | - 81:80 14 | networks: 15 | backend-net: 16 | 17 | #------------------------------------------------------------------------------- 18 | # php-fpm for calling the Zend Expressive app 19 | #------------------------------------------------------------------------------- 20 | php: 21 | image: janatzend/particulum-mobile-backend:latest 22 | labels: 23 | com.roguewave.particulummobile.description: "Zend Expressive Backend for Particulum Mobile app" 24 | com.roguewave.particulummobile.service: "particulum-mobile-backend" 25 | networks: 26 | backend-net: 27 | aliases: 28 | - backend-entry-point 29 | 30 | #------------------------------------------------------------------------------- 31 | # Redis is used by the Zend Expressive app as a key value storage, 32 | # not for session handling 33 | #------------------------------------------------------------------------------- 34 | redis: 35 | image: redis:3.2.7-alpine 36 | networks: 37 | backend-net: 38 | 39 | #------------------------------------------------------------------------------- 40 | # Nginx container serving the static content 41 | #------------------------------------------------------------------------------- 42 | js: 43 | image: janatzend/particulum-mobile-frontend:latest 44 | environment: 45 | - BACKEND="'; BACKEND=window.location.origin.replace('-80.', '-81.'); var x='" 46 | - SWARM_MODE=true 47 | - CONTAINER_INFO="'; CONTAINER_INFO=window.location.origin.replace('-80.', '-8080.'); var x='" 48 | ports: 49 | - 80:80 50 | 51 | #------------------------------------------------------------------------------- 52 | # Visualizer container; serving Docker container information to frontend 53 | #------------------------------------------------------------------------------- 54 | vis: 55 | image: janatzend/particulum-mobile-visualizer:latest 56 | ports: 57 | - 8080:8080 58 | volumes: 59 | - /var/run/docker.sock:/var/run/docker.sock 60 | deploy: 61 | placement: 62 | constraints: [node.role == manager] 63 | 64 | networks: 65 | backend-net: 66 | --------------------------------------------------------------------------------