Docker روی ویندوز
در این راهنما، MyEMS را با استفاده از Docker روی ویندوز مستقر خواهید کرد.
پیشنیازها
- نصب بودن docker و npm روی میزبان.
- نصب بودن سرور MySQL.
- پایگاه داده MySQL باید از میزبانی که موتور Docker روی آن اجرا میشود قابل اتصال باشد.
- الزامات سختافزاری: حداقل ۴ گیگابایت رم، ۲۰ گیگابایت فضای ذخیرهسازی (پایگاه داده و کانتینر Docker).
کلون کردن کد منبع:
cd ~
git clone https://github.com/myems/myems
مرحله ۱ پایگاه داده
به پایگاه داده مراجعه کنید
مرحله ۲ myems-api
در این بخش، myems-api را روی Docker نصب خواهید کرد.
- کپی کد منبع به دایرکتوری ریشه
cp -r myems/myems-api c:\
cd c:\myems-api
- ایجاد فایل .env بر اساس فایل example.env
به صورت دستی 127.0.0.1 را با آدرس IP واقعی میزبان جایگزین کنید.
cp example.env .env
- ساخت Image از کد منبع
docker build -t myems/myems-api .
برای ساخت برای چندین پلتفرم و نه فقط برای معماری و سیستم عاملی که کاربر سازنده به طور تصادفی روی آن اجرا میکند. میتوانید از buildx استفاده کنید و پرچم --platform را برای مشخص کردن پلتفرم هدف برای خروجی ساخت تنظیم کنید (برای مثال، linux/amd64، linux/arm64، یا darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- اجرای یک کانتینر Docker
روی میزبان، یک پوشه در مسیر c:\myems-upload ایجاد کنید و آن را به صورت bind-mount به کانتینار متصل کنید، و همچنین فایل .env را به صورت bind-mount به کانتینار متصل کنید:
docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-api\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
-
-d اجرای کانتینر در پسزمینه و چاپ شناسه کانتینر
-
-p انتشار پورت(های) یک کانتینر به میزبان، 8000:8000 (میزبان:کانتینر) پورت ۸۰۰۰ (سمت راست) کانتینر را به پورت TCP ۸۰۰۰ (سمت چپ) ماشین میزبان متصل میکند.
-
-v اگر از -v یا --volume برای اتصال bind-mount یک فایل یا دایرکتوری که هنوز روی میزبان Docker وجود ندارد استفاده کنید، -v نقطه پایانی را برای شما ایجاد میکند. همیشه به عنوان یک دایرکتوری ایجاد میشود. گزینه ro، در صورت وجود، باعث میشود که mount bind به صورت فقطخواندنی در کانتینر نصب شود. برای نسخههای v4.7.0 یا قدیمیتر، به جای '/app/.env' از '/code/.env' استفاده کنید.
-
--log-opt max-size=2m حداکثر اندازه لاگ قبل از چرخش. یک عدد صحیح مثبت به همراه یک اصلاحکننده که واحد اندازه را نشان میدهد (k، m، یا g).
-
--log-opt max-file=2 حداکثر تعداد فایلهای لاگی که میتوانند وجود داشته باشند. اگر چرخش لاگها فایلهای اضافی ایجاد کند، قدیمیترین فایل حذف میشود. یک عدد صحیح مثبت.
-
--restart خطمشی راهاندازی مجدد برای اعمال زمانی که یک کانتینر خارج میشود
-
--name اختصاص یک نام به کانتینر
مسیر مطلق قبل از دونقطه برای مسیر روی میزبان است و ممکن است در سیستم شما متفاوت باشد. مسیر مطلق بعد از دونقطه برای مسیر روی کانتینر است و قابل تغییر نیست. با ارسال .env به عنوان پارامتر bind-mount، میتوانید بعداً مقادیر پیکربندی را تغییر دهید. اگر فایل .env را تغییر دادید، برای اعمال تغییر، کانتینر را مجدداً راهاندازی کنید.
اگر میخواهید image را به کامپیوتر دیگری منتقل کنید،
- خروجی گرفتن image به فایل tarball
docker save --output myems-api.tar myems/myems-api
- کپی فایل tarball به کامپیوتر دیگر و سپس بارگذاری image از فایل tarball
docker load --input .\myems-api.tar
مرحله ۳ myems-admin
در این بخش، myems-admin را روی Docker نصب خواهید کرد.
- کپی کد منبع به دایرکتوری ریشه
cp -r myems/myems-admin c:\
cd c:\myems-admin
به صورت دستی 127.0.0.1:8000 را در nginx.conf با آدرس IP واقعی میزبان و پورت myems-api جایگزین کنید.
notepad nginx.conf
proxy_pass http://127.0.0.1:8000/;
- ساخت Image از کد منبع
docker build -t myems/myems-admin .
برای ساخت برای چندین پلتفرم و نه فقط برای معماری و سیستم عاملی که کاربر سازنده به طور تصادفی روی آن اجرا میکند. میتوانید از buildx استفاده کنید و پرچم --platform را برای مشخص کردن پلتفرم هدف برای خروجی ساخت تنظیم کنید (برای مثال، linux/amd64، linux/arm64، یا darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- اجرای یک کانتینر Docker
روی میزبان، یک پوشه در مسیر c:\myems-upload ایجاد کنید و آن را به صورت bind-mount به کانتینار متصل کنید، و همچنین فایل nginx.conf را به صورت bind-mount به کانتینار متصل کنید: پارامتر -v برای پوشه upload باید با myems-api یکسان باشد
docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
-
-d اجرای کانتینر در پسزمینه و چاپ شناسه کانتینر
-
-p انتشار پورت(های) یک کانتینر به میزبان، 8001:8001 (میزبان:کانتینر) پورت ۸۰۰۱ (سمت راست) کانتینر را به پورت TCP ۸۰۰۱ (سمت چپ) ماشین میزبان متصل میکند.
-
-v اگر از -v یا --volume برای اتصال bind-mount یک فایل یا دایرکتوری که هنوز روی میزبان Docker وجود ندارد استفاده کنید، -v نقطه پایانی را برای شما ایجاد میکند. همیشه به عنوان یک دایرکتوری ایجاد میشود. گزینه ro، در صورت وجود، باعث میشود که mount bind به صورت فقطخواندنی در کانتینر نصب شود. برای نسخههای v4.7.0 یا قدیمیتر، به جای '/app/.env' از '/code/.env' استفاده کنید.
-
--log-opt max-size=2m حداکثر اندازه لاگ قبل از چرخش. یک عدد صحیح مثبت به همراه یک اصلاحکننده که واحد اندازه را نشان میدهد (k، m، یا g).
-
--log-opt max-file=2 حداکثر تعداد فایلهای لاگی که میتوانند وجود داشته باشند. اگر چرخش لاگها فایلهای اضافی ایجاد کند، قدیمیترین فایل حذف میشود. یک عدد صحیح مثبت.
-
--restart خطمشی راهاندازی مجدد برای اعمال زمانی که یک کانتینر خارج میشود
-
--name اختصاص یک نام به کانتینر
اگر میخواهید image را به کامپیوتر دیگری منتقل کنید،
- خروجی گرفتن image به فایل tarball
docker save --output myems-admin.tar myems/myems-admin
- کپی فایل tarball به کامپیوتر دیگر و سپس بارگذاری image از فایل tarball
docker load --input .\myems-admin.tar
مرحله ۴ myems-modbus-tcp
در این بخش، myems-modbus-tcp را روی Docker نصب خواهید کرد.
- کپی کد منبع به دایرکتوری ریشه
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
- ایجاد فایل .env بر اساس فایل example.env
به صورت دستی 127.0.0.1 را با آدرس IP واقعی میزبان جایگزین کنید.
cp example.env .env
- ساخت Image از کد منبع
docker build -t myems/myems-modbus-tcp .
برای ساخت برای چندین پلتفرم و نه فقط برای معماری و سیستم عاملی که کاربر سازنده به طور تصادفی روی آن اجرا میکند. میتوانید از buildx استفاده کنید و پرچم --platform را برای مشخص کردن پلتفرم هدف برای خروجی ساخت تنظیم کنید (برای مثال، linux/amd64، linux/arm64، یا darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- اجرای یک کانتینر Docker (اجرا به عنوان Administrator)
docker run -d -v c:\myems-modbus-tcp\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
-
-d اجرای کانتینر در پسزمینه و چاپ شناسه کانتینر
-
-v اگر از -v یا --volume برای اتصال bind-mount یک فایل یا دایرکتوری که هنوز روی میزبان Docker وجود ندارد استفاده کنید، -v نقطه پایانی را برای شما ایجاد میکند. همیشه به عنوان یک دایرکتوری ایجاد میشود. گزینه ro، در صورت وجود، باعث میشود که mount bind به صورت فقطخواندنی در کانتینر نصب شود. برای نسخههای v4.7.0 یا قدیمیتر، به جای '/app/.env' از '/code/.env' استفاده کنید.
-
--log-opt max-size=2m حداکثر اندازه لاگ قبل از چرخش. یک عدد صحیح مثبت به همراه یک اصلاحکننده که واحد اندازه را نشان میدهد (k، m، یا g).
-
--log-opt max-file=2 حداکثر تعداد فایلهای لاگی که میتوانند وجود داشته باشند. اگر چرخش لاگها فایلهای اضافی ایجاد کند، قدیمیترین فایل حذف میشود. یک عدد صحیح مثبت.
-
--restart خطمشی راهاندازی مجدد برای اعمال زمانی که یک کانتینر خارج میشود
-
--name اختصاص یک نام به کانتینر
مسیر مطلق قبل از دونقطه برای مسیر روی میزبان است و ممکن است در سیستم شما متفاوت باشد. مسیر مطلق بعد از دونقطه برای مسیر روی کانتینر است و قابل تغییر نیست. با ارسال .env به عنوان پارامتر bind-mount، میتوانید بعداً مقادیر پیکربندی را تغییر دهید. اگر فایل .env را تغییر دادید، برای اعمال تغییر، کانتینر را مجدداً راهاندازی کنید.
- انتقال کانتینر Docker
برای انتقال کانتینر به کامپیوتر دیگر،
- خروجی گرفتن image به فایل tarball
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- کپی فایل tarball به کامپیوتر دیگر و سپس بارگذاری image از فایل tarball
docker load --input .\myems-modbus-tcp.tar
مرحله ۵ myems-cleaning
در این بخش، myems-cleaning را روی Docker نصب خواهید کرد.
- کپی کد منبع به دایرکتوری ریشه
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
- ایجاد فایل .env بر اساس فایل example.env
به صورت دستی 127.0.0.1 را با آدرس IP واقعی میزبان جایگزین کنید.
cp example.env .env
- ساخت Image از کد منبع
docker build -t myems/myems-cleaning .
برای ساخت برای چندین پلتفرم و نه فقط برای معماری و سیستم عاملی که کاربر سازنده به طور تصادفی روی آن اجرا میکند. میتوانید از buildx استفاده کنید و پرچم --platform را برای مشخص کردن پلتفرم هدف برای خروجی ساخت تنظیم کنید (برای مثال، linux/amd64، linux/arm64، یا darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- اجرای یک کانتینر Docker (اجرا به عنوان Administrator)
docker run -d -v c:\myems-cleaning\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
-
-d اجرای کانتینر در پسزمینه و چاپ شناسه کانتینر
-
-v اگر از -v یا --volume برای اتصال bind-mount یک فایل یا دایرکتوری که هنوز روی میزبان Docker وجود ندارد استفاده کنید، -v نقطه پایانی را برای شما ایجاد میکند. همیشه به عنوان یک دایرکتوری ایجاد میشود. گزینه ro، در صورت وجود، باعث میشود که mount bind به صورت فقطخواندنی در کانتینر نصب شود. برای نسخههای v4.7.0 یا قدیمیتر، به جای '/app/.env' از '/code/.env' استفاده کنید.
-
--log-opt max-size=2m حداکثر اندازه لاگ قبل از چرخش. یک عدد صحیح مثبت به همراه یک اصلاحکننده که واحد اندازه را نشان میدهد (k، m، یا g).
-
--log-opt max-file=2 حداکثر تعداد فایلهای لاگی که میتوانند وجود داشته باشند. اگر چرخش لاگها فایلهای اضافی ایجاد کند، قدیمیترین فایل حذف میشود. یک عدد صحیح مثبت.
-
--restart خطمشی راهاندازی مجدد برای اعمال زمانی که یک کانتینر خارج میشود
-
--name اختصاص یک نام به کانتینر
مسیر مطلق قبل از دونقطه برای مسیر روی میزبان است و ممکن است در سیستم شما متفاوت باشد. مسیر مطلق بعد از دونقطه برای مسیر روی کانتینر است و قابل تغییر نیست. با ارسال .env به عنوان پارامتر bind-mount، میتوانید بعداً مقادیر پیکربندی را تغییر دهید. اگر فایل .env را تغییر دادید، برای اعمال تغییر، کانتینر را مجدداً راهاندازی کنید.
- انتقال کانتینر Docker
برای انتقال کانتینر به کامپیوتر دیگر،
- خروجی گرفتن image به فایل tarball
docker save --output myems-cleaning.tar myems/myems-cleaning
- کپی فایل tarball به کامپیوتر دیگر و سپس بارگذاری image از فایل tarball
docker load --input .\myems-cleaning.tar