Menu

Dockerization Rails5 Chat Beispiel

24. Dezember 2016 - Docker, Rails

Das Rails 5 Chat Beispiel aus:

ActionCable Rails5

möchte ich gerne in ein Docker Container packen, um damit besser arbeiten zu können. Der Quelltext des ersten Schrittes findet sich auf github:

https://github.com/StMoelter/rails5-chat-example/tree/blog-1.1

Hier ist die docker-compose.yml Datei im root der Schlüssel. Die Datei stößt den Bau des Containers an, startet Redis im Hintergrund und verbindet beide über ein Netzwerk.

Der Port 3000 des Containers wird auf den Host gebunden (auf 0.0.0.0 und nicht auf localhost, um das ‚rumspielen‘ mit dem Chat im lokalen Netzwerk zu ermöglichen).

Durch die Angabe:

volumes:
  - .:/app

wird erreicht, dass das Filesystem vom Host in das Rails-Directory im Container eingebunden, oder gemounted wird.

Dadurch arbeitet der Rails-Server im Container mit den aktuellen Daten vom Host. Die Entwicklung ‚fühlt‘ sich also an, als würde der Server auf dem Host laufen, da Änderung im Quelltext wie gewohnt ihre Wirkung tun. Aber der Server ist gekapselt im Docker-Container.

Möchte man einfach nur den Chat eben schnell starten, so geht das über eine weitere docker-compose.yml Datei:

https://github.com/StMoelter/rails5-chat-example/blob/blog-1.2/docker/docker-compose.yml

Es reicht aus diese auf den Host zu kopieren und mit docker-compose up -d zu starten. Das Docker-Image für das Chat-Beispiel habe ich gebaut und in meinen Docker-Hub Account geladen.

https://hub.docker.com/r/stmoelter/rails5-chat-example/

Tag ist blog-1.2, ist aber in der docker-compose.yml schon konfiguriert.