100 Days of Cloud: Day 4 – تسخیر Postgres در برنامه Dockerized Go ما!

Summarize this content to 400 words in Persian Lang
هی همه،
به روز 4 از چالش 100 روز ابر خوش آمدید! من دیروز یک استراحت شایسته را انجام دادم، اما برگشتم و آماده مقابله با مانع بعدی هستم – اتصال برنامه Dockerized Go ما به پایگاه داده Postgres.
به عنوان یک جمع بندی سریع، دیروز با یک پیام خطایی مواجه شدیم که نشان می دهد برنامه ما نمی تواند به برنامه متصل شود. verisafe پایگاه داده در localhost. این به این دلیل است که، به طور پیش فرض، کانتینرهای Docker در یک شبکه مجزا از دستگاه میزبان شما کار می کنند. در اینجا خطا برای مرجع است:
2024/07/15 08:14:49 failed to connect to `user=test database=verisafe`:
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
2024/07/15 08:14:49 /app/api/server.go:57
[error] failed to initialize database, got error failed to connect to `user=test database=verisafe`:
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای غلبه بر این مشکل، تصمیم گرفتیم یک نمونه اختصاصی Postgres را برای کانتینر خود راهاندازی کنیم تا به آن متصل شود. دو رویکرد اصلی وجود دارد:
اجرای یک ظرف جداگانه Postgres: این راهی است که من طی کردم. من استفاده کردم docker run دستور با چند متغیر محیط جادویی (-e) برای ایجاد یک ظرف Postgres با نام postgres. این دستور برای مرجع است:
docker run -d –name postgres -e POSTGRES_USER=test -e POSTGRES_PASSWORD=test -e POSTGRES_DB=verisafe postgres:latest
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این متغیرهای محیطی نام کاربری، رمز عبور و نام پایگاه داده را روی آن تنظیم می کنند test و verisafe به ترتیب، درست مانند برنامه Go ما .env فایل.
نصب Postgres به صورت محلی: این شامل نصب مستقیم Postgres بر روی دستگاه شما و ایجاد کاربر و پایگاه داده به صورت دستی است. ما این گزینه را در آینده بررسی خواهیم کرد، اما در حال حاضر، رویکرد کانتینر کارآمد به نظر می رسد.
هنگامی که کانتینر Postgres راه اندازی شد، باید آدرس IP آن را پیدا کنم. خوشبختانه، داکر این را فراهم می کند docker inspect فرمان برای این منظور.
با در دست داشتن IP، من آن را به روز کردم DB_HOST متغیر در برنامه Go من .env برای اشاره به IP ظرف Postgres به جای localhost.
موفقیت! پس از بازسازی تصویر Docker و چرخاندن یک کانتینر جدید، برنامه Go من با خوشحالی به پایگاه داده Postgres درون ظرف متصل شد. این یک پیروزی کوچک است، اما یک گام مهم در ساختن برنامه ما واقعاً ظرف است.
پیش به روز 5!
فردا، عمیقتر به دنیای شبکههای Docker خواهیم پرداخت. در حال حاضر، کانتینرهای ما در شبکه پیشفرض Docker کار میکنند، که ممکن است برای محیطهای تولید ایدهآل نباشد. ما یاد خواهیم گرفت که چگونه شبکه سفارشی خود را ایجاد کنیم تا ارتباط بین برنامه Go خود و ظرف Postgres را به طور مؤثرتری مدیریت کنیم.
علاوه بر این، ما دانش جدید خود را با راهاندازی یک فایل Docker Compose به کار خواهیم برد. این ابزار بسیار خوب به ما امکان می دهد تا استقرار چندین کانتینر Docker را تعریف و هماهنگ کنیم و مدیریت برنامه Go و کانتینر Postgres را با هم آسان تر می کند.
این سفر ابری بسیار سرگرم کننده است و من نمی توانم صبر کنم تا فردا آموخته های بیشتری را با همه شما به اشتراک بگذارم! در ضمن، هر گونه سوال یا نظری را در زیر مطرح کنید. کد نویسی مبارک!
هی همه،
به روز 4 از چالش 100 روز ابر خوش آمدید! من دیروز یک استراحت شایسته را انجام دادم، اما برگشتم و آماده مقابله با مانع بعدی هستم – اتصال برنامه Dockerized Go ما به پایگاه داده Postgres.
به عنوان یک جمع بندی سریع، دیروز با یک پیام خطایی مواجه شدیم که نشان می دهد برنامه ما نمی تواند به برنامه متصل شود. verisafe
پایگاه داده در localhost
. این به این دلیل است که، به طور پیش فرض، کانتینرهای Docker در یک شبکه مجزا از دستگاه میزبان شما کار می کنند. در اینجا خطا برای مرجع است:
2024/07/15 08:14:49 failed to connect to `user=test database=verisafe`:
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
2024/07/15 08:14:49 /app/api/server.go:57
[error] failed to initialize database, got error failed to connect to `user=test database=verisafe`:
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused
برای غلبه بر این مشکل، تصمیم گرفتیم یک نمونه اختصاصی Postgres را برای کانتینر خود راهاندازی کنیم تا به آن متصل شود. دو رویکرد اصلی وجود دارد:
-
اجرای یک ظرف جداگانه Postgres: این راهی است که من طی کردم. من استفاده کردم
docker run
دستور با چند متغیر محیط جادویی (-e
) برای ایجاد یک ظرف Postgres با نامpostgres
. این دستور برای مرجع است:
docker run -d --name postgres -e POSTGRES_USER=test -e POSTGRES_PASSWORD=test -e POSTGRES_DB=verisafe postgres:latest
این متغیرهای محیطی نام کاربری، رمز عبور و نام پایگاه داده را روی آن تنظیم می کنند test
و verisafe
به ترتیب، درست مانند برنامه Go ما .env
فایل.
- نصب Postgres به صورت محلی: این شامل نصب مستقیم Postgres بر روی دستگاه شما و ایجاد کاربر و پایگاه داده به صورت دستی است. ما این گزینه را در آینده بررسی خواهیم کرد، اما در حال حاضر، رویکرد کانتینر کارآمد به نظر می رسد.
هنگامی که کانتینر Postgres راه اندازی شد، باید آدرس IP آن را پیدا کنم. خوشبختانه، داکر این را فراهم می کند docker inspect
فرمان برای این منظور.
با در دست داشتن IP، من آن را به روز کردم DB_HOST
متغیر در برنامه Go من .env
برای اشاره به IP ظرف Postgres به جای localhost
.
موفقیت! پس از بازسازی تصویر Docker و چرخاندن یک کانتینر جدید، برنامه Go من با خوشحالی به پایگاه داده Postgres درون ظرف متصل شد. این یک پیروزی کوچک است، اما یک گام مهم در ساختن برنامه ما واقعاً ظرف است.
پیش به روز 5!
فردا، عمیقتر به دنیای شبکههای Docker خواهیم پرداخت. در حال حاضر، کانتینرهای ما در شبکه پیشفرض Docker کار میکنند، که ممکن است برای محیطهای تولید ایدهآل نباشد. ما یاد خواهیم گرفت که چگونه شبکه سفارشی خود را ایجاد کنیم تا ارتباط بین برنامه Go خود و ظرف Postgres را به طور مؤثرتری مدیریت کنیم.
علاوه بر این، ما دانش جدید خود را با راهاندازی یک فایل Docker Compose به کار خواهیم برد. این ابزار بسیار خوب به ما امکان می دهد تا استقرار چندین کانتینر Docker را تعریف و هماهنگ کنیم و مدیریت برنامه Go و کانتینر Postgres را با هم آسان تر می کند.
این سفر ابری بسیار سرگرم کننده است و من نمی توانم صبر کنم تا فردا آموخته های بیشتری را با همه شما به اشتراک بگذارم! در ضمن، هر گونه سوال یا نظری را در زیر مطرح کنید. کد نویسی مبارک!