ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΏΠ΅Π½ΡΠ°ΡΡΠ΅ Docker-ΡΠ°ΠΉΠ»Ρ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ
ΠΡΠ°ΠΏ 2: Runtime
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ.
ΠΠ° ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π·: mcr.microsoft.com/dotnet/aspnet:8.0.
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ASP.NET – Π½ΠΈ SDK, Π½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±Π°Π³Π°ΠΆΠ°.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Ρ Π²ΡΠ±ΡΠ°Π» /app, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΆΠΈΡΡ.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π΅ ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ root, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ appuser.
Π Π°Π±ΠΎΡΠ°ΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ root Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ – Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π²Π΅ΡΡ Π½Π΅Π·Π°ΠΏΠ΅ΡΡΠΎΠΉ, Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ.
ΠΠ°ΡΠ΅ΠΌ Ρ Π·Π°Π±ΠΈΡΠ°Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΎ ΡΡΠ°Π΄ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ COPY –from=build /app ./. ΠΡΡΡΡΡΠΉ chown ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΡΠ°Π²Π° Π½Π° appuser, Π° USER appuser Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ root.
Π― ΠΎΡΠΊΡΡΠ²Π°Ρ ΠΏΠΎΡΡ 8080 (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅), ΠΈ ENTRYPOINT Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ dotnet YourAppName.dll.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΡΠ΄Π° ΠΈΠΌΡ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ DLL!
ΠΠ°ΠΏΡΡΠΊ
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ:
docker build -t mycoolapp .docker run -p 8080:8080 mycoolapp
ΠΠ°ΠΆΠΌΠΈΡΠ΅ http://localhost:8080 Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΈ Π±ΡΠΌ – Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ ΠΊ ΡΠ°Π±ΠΎΡΠ΅.
ΠΡΠ°ΠΊ, Π² ΡΠ΅ΠΌ ΠΆΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΡΠ³ΠΎΠ΄Π°?
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΡΠΎΡΠ΅ΡΠ½ΡΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΠ΄Π½ΠΎΡΡΠ°ΠΏΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ.
ΠΡ Π½Π΅ ΡΠ°ΡΠΊΠ°Π΅ΡΠ΅ Ρ ΡΠΎΠ±ΠΎΠΉ SDK ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ±ΠΎΡΠΊΠΈ – ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ root-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Docker ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ Ρ Π½ΡΠ»Ρ.
ΠΠ΅Π½ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅, Π° ΠΏΠΎΡΡΠΎΡΠ½ΡΡΠ²ΠΎ Docker ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ½Π΅ Π½Π΅ Π±ΠΎΡΠΎΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Β«ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅Β».
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΡΠΎΠ²Π΅ΡΡ
ΠΡΠΎ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ ΠΎΡΠΏΡΠ°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ°, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΈΡΡ Π΅Π΅ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ.
ΠΡΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Ρ ΡΠ»Ρ ΡΠ΅ΠΊ ?
ΠΠΎΠ±Π°Π²ΡΡΠ΅:
VOLUME /app/data
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΠΎΠ³ΠΎΡΡΡΠΏΠ΅Π½ΡΠ°ΡΡΠ΅ Docker-ΡΠ°ΠΉΠ»Ρ ΡΡΠ°Π»ΠΈ ΠΌΠΎΠ΅ΠΉ ΠΏΠ°Π»ΠΎΡΠΊΠΎΠΉ-Π²ΡΡΡΡΠ°Π»ΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET Core.
ΠΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΎΡΠ²ΠΎΠΈΡΠ΅ ΠΈΡ , Π²ΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΌΠ°ΡΠ»Ρ.
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ ΠΎΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ – Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Ρ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π±Π΅Π· Π½Π΅Π³ΠΎ.
ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅:
![]()
