-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Meeting notes 2014-06-04 #1
Comments
https://www.vagrantup.com/blog/feature-preview-vagrant-1-6-docker-dev-environments.html länk med lite info kring docker i vagrant |
OBS, behöver vagrant 1.6.2 |
Embedded tomcat java app: https://github.com/dmarell/doodleshop |
$ java -jar doodleshop.war |
Docker tutorials http://www.centurylinklabs.com/. |
Design patterns for Heroku apps that are very relevant for Docker apps http://12factor.net/. |
Go conf
|
Skapat ett nytt github-projektdockerApplicationServer för att skapa en maskin att köra Docker på. Mac OS X kör inte Docker native. Då kan man använda samma maskindefinition att utveckla på som i produktion.
Om vi lägger Dockerdefinitionen i en eget github-projekt kan vi bygga en docker-image som kan finnas i dockers repository (Dockers affärsmodell är liknande githubs, de hostar images gratis så länge de är publika. Vill du ha privata docker images kostar det).
Utgår från phusion/baseimage därför att den har stöd för ssh, default för Docker är att ssh-stöd saknas.
skapa VagrantFile
vagrant up --provider=docker
Docker behöver port 4243 och det kolliderade med CrashPlan, så har man CrashPlan eller nåt annat på 4243 får man stoppa det.
Vi började med att skapa en databasmaskin. Vi tror att rätt modell med docker är att starta en docker-container per databas och inte försöka klämma in flera databaser i samma db-container.
Nästa steg är att skapa en appserver med tomcat.
Vi fick trassel med hängning vid uppstart:
...
==> app: Creating the container...
app: Name: app
app: Image: phusion/baseimage
app: Cmd: /sbin/my_init --enable-insecure-key
app: Volume: /var/lib/docker/docker_1401893872_25527:/vagrant
app: Port: 2222:22
Här hänger den i evigheter vid vagrant up --provider=docker. Beror detta på att vi kör phusion/baseimage?
Vi övergick att köra doodleshop som är en demoapp med embedded tomcat. Då behöver vi bara ha JRE på maskinen och slipper installera Tomcat.
Vi tänker oss att lägga CoreOS i botten, dvs starta denna med Vagant (man ska kunna köra samma konfig från Windows, Linux och OS X). CoreOS har Docker. Som Docker-containers kör vi hela miljön: prodserver, testserver, dbserver, lastbalanserare, ciserver.
Vi håller på med att försöka mappa upp kataloger i containrarna till hostens filsystem. Till exempel databasen skall lagra sitt data i en katalog som mappas till en katalog på dess host, CoreOS. Och denna katalog på CoreOS måste i sin tur mappas till en katalog i dess hosts filsystem, t.ex. Mac OS X. Samma gäller appservrar för att få ut loggar. Ett alternativ är att skippa att mappa upp appservrarna och satsa på centraliserad loggning via logstash, ELK stack.
Sedan kom vi på att det blir svårt att starta nya docker-containers (prod, test, lb, db) från CI-servern om även denna ligger som en Docker-container, vilket innebär att vi vill installera CI på hosten, samma som docker själv kör på. Detta innebär att det är mest praktiskt att köra precise64 där istället för CoreOS.
Första steget i build pipeline är "Build". Denna bygger artefakten från senaste källkoden. Kör enhetstester. Sedan skapas en Docker-image. Integrationstestjobbet löses genom att pre-integration-test i maven deployar denna versions docker image till en docker container och startar denna. Integrationstesterna kör mot denna container. URL är miljöspecifik så man kan köra integrationtesterna lokalt också. post-integration-test tar ned containern.
Vi fortsatte med att implementera detta i Go. Vi har behov av att flytta ut konfigurationsparametrarna för olika miljöer till environmentvariabler, t.ex. http-port. När man startar en docker-container med docker run anger man vilken port den skall exponera. Applikationen måste startas med samma port och porte beror av vilken Docker-container applikationen kör. Denna parameter måste kunna styras utifrån för att informationen om vilken port vi kör på inte ska behöva finnas på två ställen, dvs först incheckad i den miljöspecifika konfigurationen och dessutom i den incheckade go-jobbkonfigen. Samma gäller andra parametrar som databas url.
The text was updated successfully, but these errors were encountered: