Voraussetzungen
Die Projekte liegen lokal in $HOME/development/socha, d.h. $HOME/development/socha/webapp fuer die Webanwendung und $HOME/development/socha/cs fuer Client/Server.
Alles wird in Container gemacht, so dass direkt auf dem Host nichts weiter installiert werden muss, ausser Docker selbst. Dazu: https://www.docker.io/gettingstarted/#h_installation
Web-Anwendung
- Container Image mit Ruby 1.8 und libs fuer Datenbanken:
docker pull octohost/ruby-1.8(siehe https://github.com/octohost/ruby-1.8.7p352) - Container Image für MySQL erstellen.
git clone git@github.com:SKoschnicke/docker-mysql.git && cd docker-mysql && docker build -t mysql_image .(siehe https://github.com/SKoschnicke/docker-mysql) - Mysql Container starten:
docker run -v="$HOME/development/socha/db":"/var/lib/mysql" -d --name mysql -p 3306 mysql_image - Anwendung in Ruby Container starten:
docker run -t -i -v="$HOME/development/socha/webapp":"/webapp" --link=mysql:mysql -p 3000 --name socha_webapp octohost/ruby-1.8 /bin/bash - Im Container Gems installieren:
cd webapp && bundle - Datenbank-Config anlegen:
cd config && cp database.yml.example database.yml - Aus dem Container wieder rausgehen per Ctrl-P, Ctrl-Q
- Host und Port der Datenbank stehen in den Umgebungsvariablen
MYSQL_PORT_3306_TCP_ADDRundMYSQL_PORT_3306_TCP_PORT, d.h. die database.yml sieht dann so aus:
development:
adapter: mysql
host: <%= ENV['MYSQL_PORT_3306_TCP_ADDR'] %>
port: <%= ENV['MYSQL_PORT_3306_TCP_PORT'] %>
database: sc_development
username: mysql
password: ''
encoding: utf8
timeout: 5000
test:
adapter: mysql
host: ENV['MYSQL_PORT_3306_TCP_ADDR']
port: ENV['MYSQL_PORT_3306_TCP_PORT']
database: sc_test
username: mysql
password: ''
encoding: utf8
timeout: 5000
- Wieder mit Container verbinden mit
docker attach socha_webapp - Datenbank im App-Container initialisieren:
cd /webapp && bundle exec rake db:create && bundle exec rake db:schema:load - Dann im Container
cd /webapp && bundle exec ./script/server - Jetzt sollte der Server laufen, mit
docker pskann man den Host-Port des socha_webapp-Containers herausfinden und dann im Browser per http://localhost:<host-port> zugreifen, z.B.:
~> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc2a61d28bf3 socha_webapp:latest /bin/bash 12 seconds ago Up 11 seconds 0.0.0.0:49153->3000/tcp socha_webapp
1c92f7bf5cb4 mysql_image:latest /bin/sh -c /start 7 minutes ago Up 7 minutes 3306/tcp mysql,socha_webapp/mysql
Hier ist der Host-Port 49153.
Client/Server
Container mit Oracle JDK 7: https://index.docker.io/u/democracyworks/oracle-jdk-7/
docker pull democracyworks/oracle-jdk-7
docker run -t -i -v $HOME/development/socha/cs:/cs democracyworks/oracle-jdk-7 /bin/bash
Im Container Ant installieren: apt-get install -u ant
Jetzt kann man im Container die Anwendung mit dem Java-Compiler oder per Ant bauen, z.B. cd cs && ant