شیوه استفاده از داکر برای اجرای یک برنامه تحت وب جاوا

برای اجرای این مثال نیاز دارید ابتدا داکر را نصب کرده باشید. طریقه نصب داکر روی ویندوز را میتوانید در همین سایت مطالعه کنید.

همچنین تمامی کدها و فایلهای مورد استفاده در این راهنما در گیت هاب در دسترس شماست: https://github.com/etcinitd/wildfly-docker-deployment-example

با فرض اینکه برنامه جاوایی خود را کامپایل کرده و به صورت یک فایل war درآورده اید، برای اجرای آن با استفاده از ابزار داکر میتوانید مراحل زیر را طی کنید. برای راحتی شما یک فایل war به صورت نمونه از قبل فراهم شده است.

  • این راهنما از نسخه ۱۰ سرور جی باس (jboss/wildfly) روی داکر استفاده میکند. ابتدا یک فایل با نام Dockerfile و با این محتویات ایجاد کنید:

    FROM jboss/wildfly:10.0.0.Final
    ADD node-info.war /opt/jboss/wildfly/standalone/deployments/
    

این فایل مخصوص داکر است و برای ساخت یک تصویر (image) داکر که برنامه جاوایی مورد نظر شما را در خود دارد استفاده میشود.

خط اول این فایل تصویر پایه (base image) را مشخص میکند که در این مثال سرور jboss/wildfly از کتابخانه داکر است. توضیحات بیشتر راجع به این تصویر خاص و نسخه های متفاوت آن را میتوانید در صفحه سایت داکر هاب مشاهده کنید.

خط دوم فایل war را که حاوی برنامه جاواست و از قبل ساخته شده، به این تصویر اضافه میکند و در آدرس مورد نظر برای سرور جی باس در داخل کانتینر قرار میدهد. بجای node-info.war میتوانید نام فایل war برنامه خودتان را بنویسید.

نکته جانبی: به طور کلی در داکر هر تصویر (image) میتواند به عنوان پایه ای برای تصاویر جدید بکار رود و به این ترتیب لایه های متعددی از تصاویر یک تصویر نهایی را تشکیل میدهند. این ویژگی یکی از قابلیتهای مهم و اصلی داکر برای تولید و پخش ساده و سریع تصاویر است چون برای تولید یا انتقال یک تصویر تنها نیاز به ایجاد یا ارسال تفاوتهای بین دو تصویر است که به حجمی بسیار کمتر از تک تک تصاویر نیاز دارد.

  • فایل war برنامه خود را، که در مثال ما node-info.war نام دارد، در همان پوشه ای که Dockerfile قرار دارد کپی کنید.

  • در همان پوشه، تصویر (image) داکر را با اجرای دستور زیر بسازید. دقت کنید که در این صورت نام تصویر تولید شده wildfly-app خواهد بود:

    docker build --tag=wildfly-app .
    
  • در نهایت، کانتینر را با استفاده از دستور زیر اجرا کنید. این کار برنامه شما را در زمان شروع به کار کانتینر به صورت خودکار روی پرت (port) شماره 8080 اجرا میکند: docker run -it -p 8080:8080 wildfly-app

  • برای تست برنامه، اگر از ابزار docker-machine استفاده میکنید، آدرس IP ماشین مجازی داکر خودتان را به این طریق پیدا کنید:

    $ docker-machine ls
    NAME      ACTIVE   DRIVER       STATE     URL
    default            virtualbox   Running   tcp://<docker-machine-ip>:2376
    
  • سپس با قرار دادن آدرس IP مرحله قبل در مرورگر، یا ابزاری مانند curl به صورت زیر، میتوانید صفحه وب برنامه جاوایی اجرا شده را مشاهده کنید:

    $ curl http://<docker-machine-ip>:8080/node-info/
    Hostname: 4e3daa7ea20f
    Java Runtime: OpenJDK Runtime Environment 1.8.0_71-b15
    OS: Linux amd64 4.0.9-boot2docker
    

اگر به هنگام اجرای کانتینرها با مشکلاتی برای دانلود image ها از Docker Hub مواجه شدید، میتوانید با تنظیم یک mirror به صورتی که در این گروه گفته شده، دوباره این کار را امتحان کنید.

اگر فکر میکنید برای کار با داکر نیاز به کمک بیشتری دارید و یا علاقه مند هستید که در آینده به یک سرور مجازی برای یادگیری داکر دسترسی داشته باشید میتوانید این فرم کوتاه را پر کنید تا به یک گروه Slack به نام elastico-users که برای همین کار ایجاد شده است دعوت شوید. در آنجا میتوانید از اعضای با تجربه تر گروه هم کمک بگیرید.