স্বাস্থ্য চেক পদ্ধতির জন্য একটি আপডেট সমাধান যুক্ত করা। সাধারণ স্নিপেট:
healthcheck:
test: out=$$(mysqladmin ping -h localhost -P 3306 -u foo
ব্যাখ্যা : যেহেতু mysqladmin ping
মিথ্যা ধনাত্মক grep
প্রত্যাশা (বিশেষত ভুল পাসওয়ার্ডের জন্য), তাই আমি আউটপুটটিকে একটি অস্থায়ী ভেরিয়েবলে সংরক্ষণ করছি, তারপরে প্রত্যাশিত আউটপুট ( mysqld is alive
) ব্যবহার করে। যদি এটি পাওয়া যায় তবে এটি 0 টি ত্রুটি কোডটি ফিরিয়ে দেবে। যদি এটি না পাওয়া যায় তবে আমি পুরো বার্তাটি মুদ্রণ করছি এবং 1 টি ত্রুটি কোডটি ফিরিয়ে দিচ্ছি।
প্রসারিত স্নিপেট:
version: "3.8"
services:
db:
image: linuxserver/mariadb
environment:
- FILE__MYSQL_ROOT_PASSWORD=/run/secrets/mysql_root_password
- FILE__MYSQL_PASSWORD=/run/secrets/mysql_password
secrets:
- mysql_root_password
- mysql_password
healthcheck:
test: out=$$(mysqladmin ping -h localhost -P 3306 -u root
secrets:
mysql_root_password:
file: ${SECRETSDIR}/mysql_root_password
mysql_password:
file: ${SECRETSDIR}/mysql_password
ব্যাখ্যা : আমি এনভির ভেরিয়েবলের পরিবর্তে ডকার সিক্রেট ব্যবহার করছি (তবে এটি নিয়মিত এনভ ভার্সের মাধ্যমেও অর্জন করা যেতে পারে)। এর ব্যবহার $$
হ'ল আক্ষরিক $
চিহ্নের জন্য যা পাত্রে পাস করার সময় কেটে নেওয়া হয়।
docker inspect --format "{{json .State.Health }}" db | jq
বিভিন্ন উপলক্ষে আউটপুট :
সব ঠিক আছে:
{
"Status": "healthy",
"FailingStreak": 0,
"Log": [
{
{
"Start": "2020-07-20T01:03:02.326287492+03:00",
"End": "2020-07-20T01:03:02.915911035+03:00",
"ExitCode": 0,
"Output": "mysqld is alive\n"
}
]
}
ডিবি আপ নেই (এখনও):
{
"Status": "starting",
"FailingStreak": 1,
"Log": [
{
"Start": "2020-07-20T01:02:58.816483336+03:00",
"End": "2020-07-20T01:02:59.401765146+03:00",
"ExitCode": 1,
"Output": "\u0007mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 \"No such file or directory\")' Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!\n"
}
]
}
ভুল গুপ্তশব্দ:
{
"Status": "unhealthy",
"FailingStreak": 13,
"Log": [
{
"Start": "2020-07-20T00:56:34.303714097+03:00",
"End": "2020-07-20T00:56:34.845972979+03:00",
"ExitCode": 1,
"Output": "\u0007mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)'\n"
}
]
}