ΠΠ°ΠΊ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΡΡ ΡΠΎΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ .net 6 - ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ net 5 ΡΠΎΠΆΠ΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ°ΠΌΠΏΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° - ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Visual Studio, Π½ΠΎ ΠΈ Π² Rider ΡΠΎΠΆΠ΅. Π§ΡΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΏΠΎΠΊΠ° ΠΈΡ
Π½Π΅ Π΄ΡΡΠ½Π΅ΡΡ. Π’ΠΎ Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π° DEV ΡΡΠ΅Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΡΡΠΌΠΎ Ρ Π½ΠΈΠΌΠΈ.
Π ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° - ΡΠ°ΡΡΡ 0, ΡΠ°ΡΡΡ 1 ΠΈ ΡΠ°ΡΡΡ 2 ΡΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ Π°Π²ΡΠΎΡΠ° ΠΏΡΠΎ OpenTelemetry ΠΈ Metrics API.
#dotnet #docker #perf
Π ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° - ΡΠ°ΡΡΡ 0, ΡΠ°ΡΡΡ 1 ΠΈ ΡΠ°ΡΡΡ 2 ΡΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ Π°Π²ΡΠΎΡΠ° ΠΏΡΠΎ OpenTelemetry ΠΈ Metrics API.
#dotnet #docker #perf
my tech ramblings
Profiling a .NET6 app running in a linux container with dotnet-trace, dotnet-dump, dotnet-counters, dotnet-gcdump and Visual Studio
This post contains a few practical examples showing you how to profile a .NET6 application running in a linux container using the .NET CLI diagnostic tools (dotnet-trace, dotnet-dump, dotnet-counters and dotnet-gcdump) and Visual Studio.
π1
Build your own .NET CPU profiler in C# - ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ΠΎΠ±ΡΠΈΠΉ workflow ΡΡΠ°ΡΠ½ΡΡ
Trace ΠΈ Listeners #dotnet #tools #docker
Medium
Build your own .NET CPU profiler in C#
After describing memory allocation profiling it is now time to dig into the CPU sample profiling in C#!
π₯1
This media is not supported in your browser
VIEW IN TELEGRAM
Dive - ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ
ΠΎΠ±ΡΠ°Π·ΠΎΠ² Docker. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ/ΠΈΠ»ΠΈ Π²ΡΡΠ°ΡΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΎΠ±ΡΠ°Π·Π° ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΠΎ ΡΠ»ΠΎΡΠΌ. #docker #tools
Secure your .NET cloud apps with rootless Linux Containers - ΠΊΠ°ΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΏΡΠ°Π²Π° Π΄Π»Ρ .net ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (non root). Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ - Π±ΡΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² .net 8 #dotnet #docker
ΠΠ²Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ #docker
Initialize RabbitMq Docker Container with preconfigured Queues - ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅/ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ #rabbitmq
Nginx and Load Balancing - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ scale Π΄Π»Ρ ΠΏΠΎΠ΄Π½ΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ
Initialize RabbitMq Docker Container with preconfigured Queues - ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅/ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ #rabbitmq
Nginx and Load Balancing - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ scale Π΄Π»Ρ ΠΏΠΎΠ΄Π½ΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ Ρ
ΠΈΡΡΠΎΡΡΠΈ #docker - ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΊΠ° postgres (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ) ΠΏΡΠΈΠ΄ΡΡ Π² Π½ΠΎΡΠΌΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ°. Π£ Postgres ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π½Π° Ρ
ΠΎΠ»ΠΎΠ΄Π½ΡΠΉ ΡΡΠ°ΡΡ (=ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΠ)
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΠ²Π°Π»ΠΈΠ»ΡΡ Docker ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Windows ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ Docker - Π½Π΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΡΠ°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ WSL ΠΈ ΡΡΠ°Π²ΠΈΡΡ. ΠΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ½Π΄Ρ (ΠΈΠ»ΠΈ Docker) Ρ Π½ΠΈΡ
Π±ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΈ Docker ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ Π²Π°Π»ΠΈΡΠ° Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅.
ΠΡΠΈΡ ΠΎΠ΄ΠΈΡΠ° ΡΡΠΊΠ°ΠΌΠΈ ΠΊΠ°ΡΠ°ΡΡ msixbundle ΠΈ Π°ΠΏΠ΄Π΅ΠΉΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ WSL, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ½ΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ. #docker
ΠΡΠΈΡ ΠΎΠ΄ΠΈΡΠ° ΡΡΠΊΠ°ΠΌΠΈ ΠΊΠ°ΡΠ°ΡΡ msixbundle ΠΈ Π°ΠΏΠ΄Π΅ΠΉΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ WSL, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ½ΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ. #docker
π7
Keycloak SSO with docker compose and nginx - Π΅ΡΡ ΠΎΠ΄Π½Π° ΡΡΠ°ΡΡΡ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ #keycloak #docker #howto
π₯7
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΡΡΡ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠ½ΠΈΡΠ°ΡΡ Π½Π° DEV ΡΡΠ΅Π΄Π΅ ΡΡΠ°ΡΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π΄ΠΎΠΊΠ΅ΡΠ°... ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ
ΡΡΡΠΎΠΊ Π½Π° ΠΏΠ°ΠΌΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΠ°ΠΌΠΏΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ASCII ( -A ):
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ + ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ΅ 'Sec-WebSocket-Key':
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ»Π°Π³ΠΎΠΌ SYN (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ):
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ keep-alive ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² http-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² GET/POST/HEAD
ΠΡ Π° ΠΏΠΎΡΠΎΠΌ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ nast, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π°ΠΌΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΡΠ΅Π»ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
#tools #docker #tcpdump
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
docker network ls
Π½Π°Π΄ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ id Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Π΄Π°Π»Π΅Π΅ ΡΡΠΎΡ id Π½Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ INTERFACE), 8000 - ΡΡΠΎ exposed port ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.ΠΠ°ΠΌΠΏΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ASCII ( -A ):
tcpdump -i INTERFACE 'tcp dst port 8000' -A
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ + ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ΅ 'Sec-WebSocket-Key':
tcpdump -i INTERFACE 'tcp dst port 8000' -A | grep 'Sec-WebSocket-Key:'
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ»Π°Π³ΠΎΠΌ SYN (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ):
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] & (tcp-syn) != 0)' -A
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ keep-alive ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] == tcp-ack and less 1)' -A
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² http-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² GET/POST/HEAD
tcpdump -i INTERFACE 'tcp dst port 8000' -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'
ΠΡ Π° ΠΏΠΎΡΠΎΠΌ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ nast, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π°ΠΌΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΡΠ΅Π»ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
nast -i INTERFACE -d -f 'tcp dst port 8000'
#tools #docker #tcpdump
π8
Docker profiles - ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ docker-compose ΡΠ°ΠΉΠ», Π½ΠΎ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ).
ΠΡΠ»ΠΈ Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ - ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ. ΠΠΎΡΠΎΠΌ Π΄Π΅Π»Π°Π΅ΡΡ
ΠΈ ΠΎΠ½ΠΎ Π±ΠΈΠ»Π΄ΠΈΡ (ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡΠ΅Ρ Π΅ΡΠ»ΠΈ up) ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ
ΠΡΠ»ΠΈ Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ - ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ. ΠΠΎΡΠΎΠΌ Π΄Π΅Π»Π°Π΅ΡΡ
docker compose --profile with-db build
ΠΈ ΠΎΠ½ΠΎ Π±ΠΈΠ»Π΄ΠΈΡ (ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡΠ΅Ρ Π΅ΡΠ»ΠΈ up) ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ
with-db
ΠΈΠ»ΠΈ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Π²ΠΎΠΎΠ±ΡΠ΅. #docker #toolsπ7
ΠΠ½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΈΠ» runtime-ΠΎΡΠΈΠ±ΠΊΡ
Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information.
ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠ» ru-RU ΠΈ ΠΏΠ°ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΡΠ»ΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΡΡ. ΠΠ°Π±ΡΠ», ΡΡΠΎ Π² Dockerfile Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΊΡΠΎΠ². Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°Ρ Π»Π΅Π³ΠΊΠΎ Π³ΡΠ³Π»ΠΈΡΠ° ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°, Π½ΠΎ ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈ ΡΡΡ:
#docker #dotnet
Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information.
ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠ» ru-RU ΠΈ ΠΏΠ°ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΡΠ»ΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΡΡ. ΠΠ°Π±ΡΠ», ΡΡΠΎ Π² Dockerfile Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΊΡΠΎΠ². Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°Ρ Π»Π΅Π³ΠΊΠΎ Π³ΡΠ³Π»ΠΈΡΠ° ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°, Π½ΠΎ ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈ ΡΡΡ:
RUN apk --no-cache add icu-libs
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
#docker #dotnet
π7π©1
ΠΡΠΎ-ΡΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π» ΠΏΡΠΎ Docker - ΡΠΈΠΏΠ° how to, ΡΠ°ΠΊ Π²ΠΎΡ Π½Π°ΡΠ»ΠΎΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠ΅ - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΠ° ΠΊΠ°ΠΊ Π² Π²Π΅Π±ΠΌΠΎΡΠ΄Π΅, ΡΠ°ΠΊ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Ρ Π΄ΠΎΠΊΠ΅ΡΠΎΠΌ. ΠΡ ΠΈ ΡΠ°ΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ Π΄ΠΎΠΊΠ΅Ρ Π΅ΡΡΡ. #docker #howto
β€14π₯8π6
ΠΠ°ΠΊ Π·Π°Ρ
ΠΎΡΡΠΈΡΡ ΡΠ°ΠΉΡ Π² Windows ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅. Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π² 2025-ΠΌ, Π½ΠΎ ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ. #docker
π6π1π€1