summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-03-30 15:13:16 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-03-30 15:13:16 +0200
commit9524f15fcbe8f16d7832425ace8447fd40f8526d (patch)
tree55971766655d20d3a30af04dfecd18cd69257c2d
parentcac48b5b99e3a7df24d9635623982f95322fa73e (diff)
downloadvaindock-9524f15fcbe8f16d7832425ace8447fd40f8526d.tar.gz
vaindock-9524f15fcbe8f16d7832425ace8447fd40f8526d.zip
set up rabbitmq for webstomp and auth
-rw-r--r--docker-compose.yml23
-rw-r--r--rabbitmq/Dockerfile12
-rw-r--r--rabbitmq/add_users.sh29
-rw-r--r--rabbitmq/custom-rabbitmq.config24
4 files changed, 77 insertions, 11 deletions
diff --git a/docker-compose.yml b/docker-compose.yml
index a4b5ce5..eec099c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -39,7 +39,7 @@ services:
ports:
- "2222:22"
links:
- - vaindock_rabbitmq
+ - vaindock_queue
tty: true
### PHP-FPM Container #######################################
@@ -94,9 +94,9 @@ services:
volumes:
- ../updater:/usr/src/app
depends_on:
- - vaindock_rabbitmq
+ - vaindock_queue
environment:
- - RABBITMQ_URI=amqp://vaindock_rabbitmq
+ - RABBITMQ_URI=amqp://updater:updater@vaindock_queue/
env_file:
- local.env
@@ -105,9 +105,9 @@ services:
volumes:
- ../apigrabber:/usr/src/app
depends_on:
- - vaindock_rabbitmq
+ - vaindock_queue
environment:
- - RABBITMQ_URI=amqp://vaindock_rabbitmq
+ - RABBITMQ_URI=amqp://apigrabber:apigrabber@vaindock_queue/
env_file:
- local.env
@@ -116,10 +116,10 @@ services:
volumes:
- ../processor:/usr/src/app
depends_on:
- - vaindock_rabbitmq
+ - vaindock_queue
- vaindock_db-web
environment:
- - RABBITMQ_URI=amqp://vaindock_rabbitmq
+ - RABBITMQ_URI=amqp://processor:processor@vaindock_queue/
- DATABASE_URI=mysql://vainweb:vainweb@vaindock_db-web/vainweb
vaindock_db-web:
@@ -144,15 +144,16 @@ services:
volumes:
- /sessions
- vaindock_rabbitmq:
- image: rabbitmq:3-management-alpine
+ vaindock_queue:
+ build: ./rabbitmq
volumes:
- - vaindock_rabbitmq-data:/var/lib/rabbitmq
+ - vaindock_queue-data:/var/lib/queue
ports:
- "4369:4369"
- "5671:5671"
- "5672:5672"
- "25672:25672"
+ - "15674:15674" # web-stomp
- "8881:15672" # management guest/guest
environment:
- RABBITMQ_HIPE_COMPILE=1
@@ -160,7 +161,7 @@ services:
volumes:
vaindock_db-web-data:
driver: "local"
- vaindock_rabbitmq-data:
+ vaindock_queue-data:
driver: "local"
sessions: ## nothing is connected to this (- ./data/sessions:/sessions)
driver: "local"
diff --git a/rabbitmq/Dockerfile b/rabbitmq/Dockerfile
new file mode 100644
index 0000000..cfb03a0
--- /dev/null
+++ b/rabbitmq/Dockerfile
@@ -0,0 +1,12 @@
+FROM rabbitmq:3-alpine
+
+RUN rabbitmq-plugins enable --offline rabbitmq_management rabbitmq_web_stomp
+
+COPY custom-rabbitmq.config /etc/rabbitmq/rabbitmq.config
+RUN chmod 666 /etc/rabbitmq/rabbitmq.config
+
+COPY add_users.sh /pre_docker-entrypoint.sh
+RUN chmod 755 /pre_docker-entrypoint.sh
+ENTRYPOINT /pre_docker-entrypoint.sh
+
+EXPOSE 15672 15674
diff --git a/rabbitmq/add_users.sh b/rabbitmq/add_users.sh
new file mode 100644
index 0000000..6a12ffe
--- /dev/null
+++ b/rabbitmq/add_users.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+set -e
+
+(
+count=0;
+# Execute list_users until service is up and running
+until timeout 5 rabbitmqctl list_users >/dev/null 2>/dev/null || (( count++ >= 20 )); do sleep 1; done;
+if ! rabbitmqctl list_users | grep updater > /dev/null
+then
+ # rabbitmqctl delete_user guest
+ rabbitmqctl add_user web web
+ rabbitmqctl set_permissions -p / web "^stomp-subscription-" "^stomp-subscription-" "^(amq.topic$|stomp-subscription-)"
+ # read only amq.topic on host /, but allow stomp subscribe
+ # services below: all allowed
+ rabbitmqctl add_user updater updater
+ rabbitmqctl set_permissions -p / updater ".*" ".*" ".*"
+ rabbitmqctl add_user apigrabber apigrabber
+ rabbitmqctl set_permissions -p / apigrabber ".*" ".*" ".*"
+ rabbitmqctl add_user processor processor
+ rabbitmqctl set_permissions -p / processor ".*" ".*" ".*"
+
+ echo "setup completed"
+else
+ echo "already setup"
+fi
+) &
+
+# Call original entrypoint
+exec docker-entrypoint.sh rabbitmq-server $@
diff --git a/rabbitmq/custom-rabbitmq.config b/rabbitmq/custom-rabbitmq.config
new file mode 100644
index 0000000..8ab23ae
--- /dev/null
+++ b/rabbitmq/custom-rabbitmq.config
@@ -0,0 +1,24 @@
+[
+ { rabbitmq_stomp, [
+ { default_user, [
+ { login, "web" },
+ { passcode, "web" }
+ ] }
+ ] },
+ { rabbitmq_web_stomp, [
+ { tcp_config, [
+ { "127.0.0.1", "15674" },
+ { "::1", "15674" }
+ ] }
+ ] },
+ { rabbit, [
+ { loopback_users, [ ] },
+ { tcp_listeners, [ 5672 ] },
+ { ssl_listeners, [ ] },
+ { hipe_compile, true }
+ ] },
+ { rabbitmq_management, [ { listener, [
+ { port, 15672 },
+ { ssl, false }
+ ] } ] }
+].