Kontitus Dockerilla
Opitte paketoimaan Clojure-sovelluksia Docker-kontteihin yhdenmukaista käyttöönottoa varten eri ympäristöissä.
Kontitus Dockerilla on ilmainen Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssilla on yhteensä 4 oppituntia.
Mikä Docker on
Docker auttaa paketoimaan sovellukset ja kaikki niiden riippuvuudet standardoituihin yksiköihin, joita kutsutaan konteiksi. Ajattele sitä kevyenä virtuaalikoneena, joka on kuitenkin paljon tehokkaampi!
Clojure-kehittäjille Docker varmistaa, että sovellus toimii täsmälleen samalla tavalla omalla koneellasi, työtoverisi koneella tai pilvessä. ”Toimii minun koneellani” -ongelmat jäävät historiaan!
Levykuvat ja kontit
Dockerin ytimessä on kaksi keskeistä käsitettä:
- Levykuvat: Ne ovat vain luku -muotoisia malleja, eräänlaisia sovelluksen piirustuksia. Ne sisältävät koodin, kirjastot ja suoritusympäristön.
- Kontit: Ne ovat levykuvan suoritettavia instansseja. Voit käynnistää, pysäyttää, siirtää tai poistaa kontin vaikuttamatta levykuvaan.
Dockerfile on komentosarja, joka kertoo Dockerille, kuinka levykuva rakennetaan.
Dockerfilen aloittaminen
Jokainen Dockerfile alkaa FROM-ohjeella. Se määrittää pohjalevykuvan, jonka päälle sovellus rakennetaan. Clojurea varten OpenJDK-levykuva (Java-kehityspaketti) on erinomainen valinta.
WORKDIR-ohje määrittää levykuvan seuraavien komentojen oletushakemiston.
FROM openjdk:17-jdk-slim
WORKDIR /appProjektin riippuvuudet (deps.edn)
Clojure-verkkosovelluksemme tarvitsee kirjaston HTTP-pyyntöjen käsittelyyn. Käytämme Ringin Jetty-sovitinta. Tämä riippuvuus ilmoitetaan deps.edn-tiedostossa, jota Clojure käyttää riippuvuuksien hallintaan.
Määrittelemme kartan, jossa avaimet ovat kirjastojen nimiä ja arvot ilmoittavat niiden version. Näin Clojure tietää, mistä tarvittava koodi etsitään ja ladataan.
{:deps {ring/ring-jetty-adapter {:mvn/version "1.9.5"}}}Yksinkertainen verkkosovelluksemme
Kirjoitetaan nyt minimaalinen Clojure-verkkopalvelin. Tämä tiedosto, src/server.clj, toimii sovelluksemme aloituspisteenä. Se käynnistää porttia 3000 kuuntelevan Jetty-palvelimen ja vastaa tekstillä "Hello from Docker!".
Kokeilkaa sen suorittamista ensin paikallisesti (kun olette määrittäneet deps.edn-tiedoston ja suorittaneet komennon clojure -P):
(ns server
(:require [ring.adapter.jetty :as jetty])
(:gen-class))
(defn handler [request]
{:status 200
:headers {"Content-Type" "text/plain"}
:body "Hello from Clojure in Docker!"})
(defn -main []
(println "Starting server on port 3000...")
(jetty/run-jetty handler {:port 3000 :join? false}))Koodin kopioiminen ja riippuvuuksien asentaminen
Seuraavaksi kopioimme deps.edn-tiedoston ja lähdekoodin säilöön. On hyvä käytäntö kopioida deps.edn ensin ja suorittaa clojure -P. Jos deps.edn ei muutu, Docker voi käyttää tätä kerrosta uudelleen, mikä nopeuttaa koontiversioiden tekemistä.
Sen jälkeen kopioimme projektin loput tiedostot.
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY deps.edn .
RUN clojure -P
COPY src srcDockerfilen viimeistely
Verkkosovellusta varten Dockerille on ilmoitettava, mitä porttia sovelluksemme kuuntelee. EXPOSE-käsky dokumentoi tämän. CMD puolestaan määrittää suoritettavan komennon, kun säilö käynnistyy, ja käynnistää Clojure-sovelluksemme.
Clojure-sovelluksemme suorittaa server-nimiavaruuden -main-funktion.
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY deps.edn .
RUN clojure -P
COPY src src
EXPOSE 3000
CMD ["clojure", "-M", "-m", "server"]Imagen koonti
Kun Dockerfile ja Clojure-projektimme ovat valmiit, voimme muodostaa Docker-imagen. Siirtykää projektin juurihakemistoon (jossa sijaitsevat Dockerfile, deps.edn ja src) ja suorittakaa tämä komento:
-tantaa imagelle nimen ja valinnaisen version..kertoo Dockerille, että Dockerfile etsitään nykyisestä hakemistosta.
docker build -t my-clojure-web-app .Säilön suorittaminen
Kun image on muodostettu, voitte suorittaa sen säilönä. Käytämme -p-valitsinta yhdistämään isäntäkoneen portin (esimerkiksi 8080) säilön sisäiseen porttiin (3000, jota sovelluksemme käyttää).
Kun säilö on käynnissä, avatkaa selaimessa osoite http://localhost:8080 nähdäksesi Clojure-sovelluksenne!
docker run -p 8080:3000 my-clojure-web-appMiksi käyttää säilöjä?
Clojure-sovellusten suorittaminen säilöissä tarjoaa monia etuja:
- Yhdenmukaisuus: Sovellus toimii samalla tavalla kaikkialla.
- Eristys: Säilöt eristävät sovelluksen muista sovelluksista ja isäntäjärjestelmästä.
- Siirrettävyys: Sovelluksen siirtäminen ympäristöstä toiseen on helppoa.
- Skaalautuvuus: Sovelluksesta voi käynnistää nopeasti useita instansseja.
Tämä yksinkertaistaa huomattavasti Clojure-palveluiden käyttöönottoa ja hallintaa.
Dockerfilen komentojen tarkistus
Mitkä seuraavista Dockerfilen käskyistä on kuvattu oikein?
Kertaus: Docker ja Clojure
Olette oppineet, miten Docker auttaa paketoimaan Clojure-sovelluksia yhdenmukaista käyttöönottoa varten. Käsittelimme seuraavat aiheet:
- Imagejen ja säilöjen peruskäsitteet.
- Dockerfilen kirjoittaminen keskeisillä käskyillä, kuten
FROM,WORKDIR,COPY,RUN,EXPOSEjaCMD. - Docker-imagen muodostaminen ja sen suorittaminen säilönä.
Nämä tiedot ovat olennaisia vankkojen Clojure-mikropalveluiden käyttöönotossa!
Opi Clojure tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Kontitus Dockerilla” ilmainen?
Kyllä – oppitunnin ”Kontitus Dockerilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssin, päivitä CoddyKit PROhon. Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kontitus Dockerilla”?
Opitte paketoimaan Clojure-sovelluksia Docker-kontteihin yhdenmukaista käyttöönottoa varten eri ympäristöissä. Harjoittelet Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Kontitus Dockerilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunnilla?
Kyllä. Jokainen Clojure-funktionaalinen ohjelmointi ja JVM-backend-kehitys-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Clojure-mikropalvelujen suunnittelu
- Kontitus Dockerilla
- Käyttöönotto pilvialustoille
- Palveluiden etsintä ja API-yhdyskäytävät