Top

Kuinka hyödyntää Dockeria?

OSS Business Solutions OyBlogi Kuinka hyödyntää Dockeria?

Kuinka hyödyntää Dockeria?

Docker kontit ovat kuuma puheenaihe. Meidän tie kohti Dockerin kontteja on kestänyt reilu puoli vuotta. Tänä aikana on opittu paljon uutta ja osan tästä tiedosta haluamma jakaa kaikille.

Olemme pitkään seuranneet ja kokeilleet omissa projekteissamme ja ympristöissä useita eri tekniikoita. Vielä kymmenen vuotta sitten kaikki projektit kehitettiin yhdellä koneella ja kaikki järjestelmät asennettiin erikseen tuotantoon. Kuten osa ehkä muistaa, tästä aiheutui aika paljon ongelmia eikä ohjelmistojen kehittäminen ollut kovinkaan tehokasta. Hieman ehdittiin tutustua Puppettiin, jota auttavasti käytettiin myös palvelimien asennuksissa. Se haudattiin melko nopeasti. Sama vaivasi myös Vagrant+Ansible kombinaatiota, joka toisaalta vaikutti sinänsä ihan toimivalta idealta. Meidän projektien elinaika on yleensä vähintään useita vuosia ja eri versiot Pupesoftista on ollut asiakkailla käytössä jo vuodesta 2005, joten ympäristön jatkuvuus on meille tärkeää. Vaikka Puppet ja Ansible varmasti ovat toimivia oikeassa ympäristössä, eivät ne meille olleet oikeita työkaluja.

Dockeria oli jo aiemmin tullut testattua, mutta sekin erilaisine mystisine docker run komentoineen vaikutti kovin sekavalta, joten se ei vielä korvannut sinänsä toimivaa Vagrant+Ansible yhdistelmää. Viime vuoden lopulla kun aloitimme uutta projektia päätin antaa Dockerille taas mahdollisuuden. Tällä kertaa tajusin miten docker composerilla voisi välttää turhien manuaalisten scriptien rakentamisen ja kuinka helposti sillä voi hallita jokaista palvelua omassa kontissaan. Muutaman illan aikana sain jotain toimivaa aikaan. Alkuinnostus ehti kuitenkin jo hieman laantua, koska edelleen jäi liikaa kysymyksiä järkevistä ratkaisumalleista.

Koska kaikki puheet Dockerista vaikutti kuitenkin lupaavalta ja idea oli ymmärretty, piti tähän palata aina uudestaan. Lopulta usean yrityksen jälkeen ajauduin oikeaan suuntaan ja loin ensimmäiset ympäristöt valmiiksi, jotka oikeasti mahdollistavat aika saumattoman kehitys- ja tuotantoympäristön määrittämisen Docker stackin avulla. Nyt alkoi vaikuttaa jo hyvältä!

Käytännössähän mikään järjestelmä ei toimi ilman ympäristömuuttujia ja oikeita asetuksia, joita Docker ei voi ratkaista. Nämä ovat jokaisen kehittäjän omia päätöksiä. Olen kuitenkin huomannut, että kaikkien projektien olisi hyvä olla rakennuspalikoiltaan melko samankaltaisia, jotta myös siihen vanhaan projektiin palaaminen olisi suhteellisen helppoa. Myös valmiit skriptit helpottavat kehitystä ja toimivat sinänsä luonnollisena dokumentaationa mitä projektissa pitää ja voi tehdä. Lopulta päädyin luomaan aika hyvät skriptit koko ympäristön käyttöönottoon, joka kyselee oman ympäristön asetukset, luo valmiit ympäristömuuttujat ja vaadittavat configuraatiot, esim SSL-sertifikaatit ja ulkopuoliset avaimet ja salasanat.

Koska haluan meidän projektien jakavan melko yhtenäisen rakenteen, keräsin kaikki hyviksi havaitsemani käytännöt yhteen projektiin nimeltä DockerStackInstaller. Asennus luo nyt kaiken meidän tarvitseman valmiiksi omaksi Git repositoryksi ja määrittelee suoraan oikeat Docker stackiin perustuvan mikropalveluympäristön. Mikä hienointa se antaa myös suoraan ohjeet miten uuden Git repositoryn voi lähettää GitLabiin tai GitHubiin ja myös palvelukohtaiset levykuvat ovat valmiita lähetettäväksi valittuun rekisteriin. Tämä vähentää merkittävästi uuden projektin aloituksen kestoa ja mahdollistaa järkevien toimintamallien käyttöönoton ilman suurempia ongelmia. Mikä parasta jokainen DockerStackInstallerin uusi asennus on oma projektinsa ja mahdollistaa ympäristön kehittämisen haluttuun suuntaan.

Tällä hetkellä DockerStackInstaller osaa asentaa valmiiksi malliprojektin, Laravel PHP ympäristön, Lumen PHP ympäristön ja tyhjän ympäristön muita projekteja varten. Laravel ja Lumen osaavatluoda myös uudet levykuvat ohjelmakoodin kanssa, joten tuotantoon siirto onnistuu aika mutkattomasti. Tämä aihe jätetään kuitenkin seuraavaan kertaan.

Nyt kesällä on hyvää aikaa tutustua uusiin projekteihin. Käy siis kurkkaamassa DockerStackInstalleria ja asenna sillä oma kesäprojektisi. Otamme mielellään vastaan parannuksia ja ehdotuksia uusista ympäristöistä joiden asennusta voisimme automatisoida.

Aurinkoista kesän jatkoa!

Tuomas Koponen
Tuomas Koponen

tuomas.koponen@oss-solutions.fi

IT-nörtti ja kestävyysurheiluintoilija