Browse Source

split docker-compose in the different services

Guilhem Saurel 7 years ago
parent
commit
65d7e8e013
7 changed files with 116 additions and 113 deletions
  1. 31 0
      cloud/docker-compose.yml
  2. 0 111
      docker-compose.yml
  3. 17 0
      homepage/docker-compose.yml
  4. 12 1
      install.md
  5. 31 0
      pad/docker-compose.yml
  6. 23 0
      traefik/docker-compose.yml
  7. 2 1
      traefik/traefik.toml

+ 31 - 0
cloud/docker-compose.yml

@@ -0,0 +1,31 @@
+version: '3'
+
+networks:
+  traefik:
+    external: true
+
+services:
+  db:
+    image: mariadb
+    restart: always
+    environment:
+      - MYSQL_DATABASE=nextcloud
+      - MYSQL_USER=nextcloud
+    env_file:
+      - .env
+    volumes:
+      - ${CHATONS_ROOT_DIR}/nextcloud/db:/var/lib/mysql
+
+  app:
+    image: nextcloud
+    restart: always
+    depends_on:
+      - cloud_db
+    labels:
+      - "traefik.backend=nextcloud"
+      - "traefik.frontend.rule=Host:cloud.${CHATONS_DOMAIN},www.cloud.${CHATONS_DOMAIN}"
+    networks:
+      - traefik
+      - default
+    volumes:
+      - ${CHATONS_ROOT_DIR}/nextcloud/app:/var/www/html

+ 0 - 111
docker-compose.yml

@@ -1,111 +0,0 @@
-version: '3'
-
-services:
-
-  ### SERVICE: cloud
-
-  cloud_db:
-    image: mariadb
-    restart: always
-    environment:
-      - MYSQL_DATABASE=nextcloud
-      - MYSQL_USER=nextcloud
-    env_file:
-      - cloud/.env
-    networks:
-      - cloud
-    volumes:
-      - ${CHATONS_ROOT_DIR}/nextcloud/db:/var/lib/mysql
-
-  cloud_app:
-    image: nextcloud
-    restart: always
-    depends_on:
-      - cloud_db
-    labels:
-      - "traefik.backend=nextcloud"
-      - "traefik.docker.network=${COMPOSE_PROJECT_NAME}_traefik"
-      - "traefik.frontend.rule=Host:cloud.${CHATONS_DOMAIN}"
-      - "traefik.enable=true"
-      - "traefik.port=80"
-    networks:
-      - cloud
-      - traefik
-    volumes:
-      - ${CHATONS_ROOT_DIR}/nextcloud/app:/var/www/html
-
-  ### SERVICE: homepage
-
-  homepage_app:
-    build: homepage
-    restart: always
-    labels:
-      - "traefik.backend=homepage"
-      - "traefik.docker.network=${COMPOSE_PROJECT_NAME}_traefik"
-      # note: www must also be present because we need its certificate
-      # and it is required for traefik redirection to work too (in traefik.yml)
-      - "traefik.frontend.rule=Host:${CHATONS_DOMAIN},www.${CHATONS_DOMAIN}"
-      - "traefik.enable=true"
-      - "traefik.port=80"
-    networks:
-      - homepage
-      - traefik
-
-  ### SERVICE: pad
-
-  pad_db:
-    image: mariadb
-    restart: always
-    env_file:
-      - pad/.env
-    networks:
-      - pad
-    volumes:
-      - ${CHATONS_ROOT_DIR}/etherpad/db:/var/lib/mysql
-
-  pad_app:
-    build: pad
-    restart: always
-    depends_on:
-      - pad_db
-    env_file:
-      - pad/.env
-    environment:
-      - ETHERPAD_DB_HOST=pad_db
-      - ETHERPAD_TITLE=Bloc Note
-    labels:
-      - "traefik.backend=etherpad"
-      - "traefik.docker.network=${COMPOSE_PROJECT_NAME}_traefik"
-      - "traefik.frontend.rule=Host:pad.${CHATONS_DOMAIN}"
-      - "traefik.enable=true"
-      - "traefik.port=9001"
-    networks:
-      - pad
-      - traefik
-    volumes:
-      - ${CHATONS_ROOT_DIR}/etherpad/app:/opt/etherpad-lite/var
-
-### TRAEFIK
-
-  traefik:
-    image: traefik
-    command: --docker.domain=${CHATONS_DOMAIN} --acme.email=${CHATONS_MAIL}
-    restart: always
-    ports:
-      - 80:80
-      - 443:443
-      - 127.0.0.1:8080:8080
-    networks:
-      - traefik
-    volumes:
-      - /var/run/docker.sock:/var/run/docker.sock
-      - ${CHATONS_ROOT_DIR}/traefik/acme.json:/acme.json
-      - ${CHATONS_ROOT_DIR}/traefik/traefik.toml:/traefik.toml
-
-### NETWORKS
-
-networks:
-  traefik:
-  cloud:
-  homepage:
-  pad:

+ 17 - 0
homepage/docker-compose.yml

@@ -0,0 +1,17 @@
+version: '3'
+
+networks:
+  traefik:
+    external: true
+
+services:
+  app:
+    build: .
+    restart: always
+    labels:
+      - "traefik.backend=homepage"
+      # note: www must also be present because we need its certificate
+      # and it is required for traefik redirection to work too (in traefik.yml)
+      - "traefik.frontend.rule=Host:${CHATONS_DOMAIN},www.${CHATONS_DOMAIN}"
+    networks:
+      - traefik

+ 12 - 1
install.md

@@ -44,8 +44,19 @@ cp setup.sh.dist setup.sh
 vim setup.sh
 ./setup.sh
 
-# Deploy Services (project name should only be set via the setup.sh file!)
+# Deploy traefik
+docker network create traefik
+cd traefik
 docker-compose up -d
+cd ..
+
+# Deploy the services you want
+for service in pad cloud homepage
+do
+    pushd $service
+    docker-compose up -d
+    popd
+done
 ```
 
 ## Configure mail

+ 31 - 0
pad/docker-compose.yml

@@ -0,0 +1,31 @@
+version: '3'
+
+networks:
+  traefik:
+    external: true
+
+services:
+  db:
+    image: mariadb
+    restart: always
+    env_file:
+      - .env
+    volumes:
+      - ${CHATONS_ROOT_DIR}/etherpad/db:/var/lib/mysql
+
+  app:
+    build: .
+    restart: always
+    env_file:
+      - .env
+    environment:
+      - ETHERPAD_DB_HOST=pad_db
+      - ETHERPAD_TITLE=Bloc Note
+    labels:
+      - "traefik.backend=etherpad"
+      - "traefik.frontend.rule=Host:pad.${CHATONS_DOMAIN}"
+    networks:
+      - default
+      - traefik
+    volumes:
+      - ${CHATONS_ROOT_DIR}/etherpad/app:/opt/etherpad-lite/var

+ 23 - 0
traefik/docker-compose.yml

@@ -0,0 +1,23 @@
+version: '3'
+
+services:
+  traefik:
+    image: traefik
+    command: --acme.email=${CHATONS_MAIL}
+    restart: always
+    ports:
+      - 80:80
+      - 443:443
+      - 127.0.0.1:8080:8080
+    networks:
+      - traefik
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock
+      - ${CHATONS_ROOT_DIR}/traefik/acme.json:/acme.json
+      - ${CHATONS_ROOT_DIR}/traefik/traefik.toml:/traefik.toml
+
+### NETWORKS
+
+networks:
+  traefik:
+    external: true

+ 2 - 1
traefik/traefik.toml

@@ -24,7 +24,8 @@ defaultEntryPoints = ["https","http"]
 # the domain is set on the command line
 endpoint = "unix:///var/run/docker.sock"
 watch = true
-exposedbydefault = false
+exposedbydefault = true
+domain = "docker.localhost"
 
 [acme]
 # the email is set on the command line