Docker-lemezkép testreszabása saját webalkalmazás futtatásához
A Docker Hub kiváló forrást biztosít olyan lemezképekhez, amelyekkel elkezdheti saját tárolóalapú alkalmazásainak létrehozását. Letölthet egy lemezképet, amely biztosítja a szükséges alapvető funkciókat, majd egy új egyéni rendszerkép létrehozásához rétegezheti a saját alkalmazását. A folyamat lépéseit egy Dockerfile megírásával automatizálhatja.
Az online ruházati áruház forgatókönyvében a vállalat úgy döntött, hogy a Docker a tovább vezető út. A következő lépésben a webalkalmazások tárolóba helyezésének legjobb módját kell meghatároznia. A vállalat azt tervezi, hogy számos alkalmazást ASP.NET Core használatával készít. Észrevette, hogy a Docker Hub tartalmaz egy alaprendszerképet, amely tartalmazza ezt a keretrendszert. A koncepció bizonyítékaként ezt az alaprendszerképet kell használnia, és hozzá kell adnia az egyik webalkalmazás kódját egy új egyéni rendszerkép létrehozásához. Azt is szeretné, hogy ez a folyamat könnyen megismételhető legyen, így a webalkalmazás új verziójának kiadásakor automatizálható.
Ebben a leckében megtudhatja, hogyan hozhat létre egyéni Docker-rendszerképet, és hogyan automatizálhatja a folyamatot egy Docker-fájl megírásával.
Egyéni lemezkép létrehozása Dockerfile használatával
Az alkalmazást tartalmazó Docker-rendszerkép létrehozásához általában egy alaprendszerkép azonosításával kell kezdenie, amelyhez fájlokat és konfigurációs információkat adhat hozzá. A megfelelő alaprendszerképek azonosításának folyamata általában a Docker Hubon történő képkereséssel kezdődik. Olyan lemezképet szeretne, amely már tartalmaz egy alkalmazás-keretrendszert, valamint egy Linux-disztribúció összes segédprogramját és eszközét, például az Ubuntu-t vagy az Alpine-t. Ha például egy olyan ASP.NET Core-alkalmazással rendelkezik, amelyet egy tárolóban szeretne elhelyezni, a Microsoft közzétesz egy mcr.microsoft.com/dotnet/core/aspnet
nevű lemezképet, amely már tartalmazza az ASP.NET Core futtatókörnyezetet.
A rendszerképek testre szabhatók úgy, hogy elindítanak egy tárolót az alaprendszerképgel, és módosítják azt. A módosítások általában olyan tevékenységeket foglalnak magukban, mint például fájlok másolása a tárolóba a helyi fájlrendszerből, és különböző eszközök és segédprogramok futtatása a kód fordításához. Ha végzett, a docker commit
paranccsal mentheti a módosításokat egy új képre.
A fenti folyamat manuális végrehajtása időigényes és hibalehetőséget jelent. A szkriptet a Bashhez hasonló szkriptnyelvvel is szkriptelheti, de a Docker hatékonyabban automatizálja a képlétrehozást Egy Docker-fájlon keresztül.
A Dockerfile egy egyszerű szöveges fájl, amely tartalmazza a rendszerkép létrehozásához szükséges összes parancsot. A Dockerfile-ok írása egy lemezképek létrehozásához és konfigurálásához készült minimális parancsnyelven történik. Dokumentálják a rendszerképek létrehozásához szükséges műveleteket egy alaprendszerképtől kezdve.
Az alábbi példa egy Dockerfile-t mutat be, amely egy .NET 6.0-alkalmazást hoz létre, és egy új rendszerképbe csomagolja.
FROM mcr.microsoft.com/dotnet/sdk:6.0
WORKDIR /app
COPY myapp_code .
RUN dotnet build -c Release -o /rel
EXPOSE 80
WORKDIR /rel
ENTRYPOINT ["dotnet", "myapp.dll"]
Ebben a fájlban a következő műveletek történnek:
Parancs | Művelet |
---|---|
FROM | Letölti a megadott lemezképet, és létrehoz egy új tárolót a rendszerkép alapján. |
WORKDIR | Beállítja az aktuális munkakönyvtárat a tárolóban; a következő parancsok használják. |
MÁSOLAT | Fájlokat másol a gazdagépről a tárolóba. Az első argumentum (myapp_code ) a gazdagépen lévő egyik fájl vagy mappa. A második argumentum (. ) a tárolóban célként szereplő fájl vagy mappa nevét határozza meg. Ebben az esetben a cél az aktuális munkakönyvtár (/app ). |
FUTTATÁS | Végrehajt egy parancsot a tárolóban. A RUN parancs argumentumai parancssori parancsok. |
LELEPLEZ | Létrehoz egy konfigurációt az új lemezképen, amely meghatározza, hogy mely portok nyíljanak meg a tároló futtatásakor. Ha a tároló egy webalkalmazást futtat, akkor az EXPOSE paranccsal általában a 80-as portot szokás megnyitni. |
ENTRYPOINT | Megadja, hogy a tárolónak milyen műveletet kell futtatnia az indításkor. Ebben a példában ez az újonnan létrehozott alkalmazás. Sztringtömbként adja meg a futtatni kívánt parancsot és annak argumentumait. |
A Docker-lemezképként csomagolandó alkalmazások forráskódjának gyökerében általában megtalálható egy Dockerfile, amelynek neve szinte mindig Dockerfile
.
A docker build
parancs egy új lemezképet hoz létre egy Dockerfile futtatásával. A parancs szintaxisa több paramétert tartalmaz:
- A -f jelölő a használandó Dockerfile nevét jelöli.
- A -t jelölő a létrehozandó kép nevét adja meg; ebben a példában a myapp:v1.
- A végső paraméter (.) a forrásfájlokhoz tartozó létrehozási környezetet adja meg a COPY parancs számára. Ez a létrehozási folyamat során szükséges fájlkészletet jelenti a gazdagépen.
docker build -t myapp:v1 .
A háttérben a docker build
parancs létrehoz egy tárolót, parancsokat futtat benne, majd véglegesíti a módosításokat egy új lemezképen.