{"id":40534,"date":"2024-05-07T13:29:46","date_gmt":"2024-05-07T13:29:46","guid":{"rendered":"https:\/\/accuweb.cloud\/resource\/?post_type=faq&#038;p=40534"},"modified":"2026-02-19T06:24:58","modified_gmt":"2026-02-19T06:24:58","slug":"building-custom-container","status":"publish","type":"faq","link":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container","title":{"rendered":"Building Custom Container"},"content":{"rendered":"<h2 class=\"ack-h2\">Building Custom Container<\/h2>\n<p>Using this platform, you can speed up the creation of your Docker image by using an existing one, specifically the platform&#8217;s CentOS 7 base template. This eliminates the need to repeat actions already accomplished in the parent template, allowing you to focus entirely on making necessary revisions.<\/p>\n<p>We will demonstrate this method by creating a custom WildFly image, a versatile and lightweight <a class=\"ack-link-color\" href=\"https:\/\/accuweb.cloud\/application\/java-hosting\" target=\"_blank\" rel=\"noopener\">Java application<\/a> server that is the successor to the well-known JBoss.<\/p>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/01-building-wildfly-docker-image-new.jpg\"><img fetchpriority=\"high\" decoding=\"async\" class=\"ack-article-image aligncenter wp-image-45531 size-full\" title=\"Dockerfile image hosting\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/01-building-wildfly-docker-image-new.jpg\" alt=\"Dockerfile image hosting\" width=\"736\" height=\"263\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/01-building-wildfly-docker-image-new.jpg 736w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/01-building-wildfly-docker-image-new-300x107.jpg 300w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/a><\/p>\n<p>The conventional way for creating Docker images is to use a Dockerfile, which serves as a specialized blueprint for automation by specifying required commands in a text file. This file is then interpreted and processed by the Docker daemon, which generates a new template based on the instructions. By eliminating the need to manually perform each operation, this method streamlined the process.<\/p>\n<p>We will detail the particular procedures required in generating a custom image of the WildFly server on our platform, resulting in a fully operating Dockerized version that is ready for use within the platform.<\/p>\n<p>Let&#8217;s proceed with the following operations, detailing each step:<\/p>\n<ul class=\"ack-ul\">\n<li><a class=\"ack-link-color\" href=\"#composing-dockerfile\">Composing Dockerfile<\/a><\/li>\n<li><a class=\"ack-link-color\" href=\"#add-image-to-repository\">Adding Image to Repository<\/a><\/li>\n<li><a class=\"ack-link-color\" href=\"#deploying-image-at-platform\">Deploying Image at the Platform<\/a><\/li>\n<\/ul>\n<div class=\"article-space\"><\/div>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"38668\" class=\"elementor elementor-38668\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"elementor_library\">\n\t\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-882321f elementor-section-boxed elementor-section-height-default elementor-section-height-default ct-header-fixed-none ct-row-max-none\" data-id=\"882321f\" data-element_type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n            \n                        <div class=\"elementor-container elementor-column-gap-default \">\n                    <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7cc79cc\" data-id=\"7cc79cc\" data-element_type=\"column\">\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\n                    \n        \t\t<div class=\"elementor-element elementor-element-e31b40f elementor-widget elementor-widget-shortcode\" data-id=\"e31b40f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\n        <\/div>\n                    <\/div>\n        <\/section>\n        \t\t<\/div>\n\t\t\n<div class=\"article-space\"><\/div>\n<h2 id=\"composing-dockerfile\" class=\"ack-h2\">Composing Dockerfile<\/h2>\n<p>First, create a new empty text file in which we will explain all of the essential operations. Then, continue with the instructions below.<\/p>\n<p><strong>Step 1.<\/strong> First, we need to specify the base template for our image building. We will use the <strong>jelasticdocker\/jelastic-centos7-base<\/strong> template, which comes pre-configured with the CentOS 7 operating system. To do this in the Dockerfile, use the <strong>FROM<\/strong> instruction as follows:<\/p>\n<pre><code class=\"language-javascript\">\r\nFROM jelasticdocker\/jelastic-centos7-base:latest<\/code><\/pre>\n<p><strong>Step 2.<\/strong> Following that, you can give generic image information, such as metadata or internal variables, which will be required for future settings. Refer to the example below to correctly set these values:<\/p>\n<pre><code class=\"language-javascript\">\r\nLABEL maintainer=\"Accuweb\"\r\nENV WILDFLY_VERSION 13.0.0.Final\r\nENV ADMIN_USER jelastic\r\nENV ADMIN_PASSWORD jelastic<\/code><\/pre>\n<p>where<\/p>\n<ul class=\"ack-ul\">\n<li><strong>LABEL:<\/strong> This allows you to define image metadata with key-value pairs, such as the Docker image&#8217;s author and version.<\/li>\n<li><strong>ENV:<\/strong> Use this to set essential environmental variables:<\/li>\n<li><strong>WILDFLY_VERSION:<\/strong> This defines which version of WildFly to build. You can modify this to another release if necessary.<\/li>\n<li><strong>ADMIN_USER:<\/strong> Enter an arbitrary administrator name to access the WildFly admin interface.<\/li>\n<li><strong>ADMIN_PASSWORD:<\/strong> Set the password for the given administrator user.<\/li>\n<\/ul>\n<p><strong>Step 3.<\/strong> You are now ready to specify the appropriate configurations via shell commands. Use the &#8216;<strong>RUN<\/strong>&#8216; operator to effectively run these commands.<\/p>\n<p>First, install the Java Development Kit (particularly, OpenJDK version 8) and the tar archiver, which will be needed to decompress downloaded files.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN yum -y install java-1.8.0-openjdk-devel tar &amp;&amp; yum -y update;<\/code><\/pre>\n<p>Following this command, make sure the installed packages are up to date.<\/p>\n<p><strong>Step 4.<\/strong> Next, specify additional procedures to download and extract the WildFly source code from the official website to the \/opt folder.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN cd \/opt &amp;&amp; curl -O https:\/\/download.jboss.org\/wildfly\/${WILDFLY_VERSION}\/wildfly-${WILDFLY_VERSION}.tar.gz \\\r\n&amp;&amp; $(which tar) xf wildfly-${WILDFLY_VERSION}.tar.gz \\\r\n&amp;&amp; rm wildfly-${WILDFLY_VERSION}.tar.gz<\/code><\/pre>\n<p><strong>Step 5.<\/strong>\u00a0Create a symlink to shorten the path to the main WildFly directory, making it more accessible and navigable.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN ln -s \/opt\/wildfly-$WILDFLY_VERSION \/opt\/wildfly<\/code><\/pre>\n<p><strong>Step 6.<\/strong> Now, let&#8217;s create the primary configuration file for our WildFly server and add all of the relevant settings to it.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN echo -en \"JAVA_HOME=\\\"\/usr\/lib\/jvm\/java\\\"\"'\\n'\\\r\n\"JBOSS_HOME=\\\"\/opt\/wildfly\\\"\"'\\n'\\\r\n\"JBOSS_USER=wildfly\"'\\n'\\\r\n\"JBOSS_MODE=standalone\"'\\n'\\\r\n\"JBOSS_CONFIG=standalone.xml\"'\\n'\\\r\n\"STARTUP_WAIT=60\"'\\n'\\\r\n\"SHUTDOWN_WAIT=60\"'\\n'\\\r\n\"JBOSS_CONSOLE_LOG=\\\"\/var\/log\/wildfly\/console.log\\\"\"'\\n'\\\r\n\"JBOSS_OPTS=\\\"-b 0.0.0.0 -bmanagement=0.0.0.0 -Djboss.management.http.port=4949 -Djboss.management.https.port=4848\\\"\" &gt;&gt; \/etc\/default\/wildfly<\/code><\/pre>\n<p><strong>Step 7.<\/strong> CentOS 7 defaults to the Systemd initiation script; however, the WildFly server requires the more classic SystemV Init script.\u00a0To avoid the Systemd redirect, you must copy the default initscript to the \/etc\/init.d folder and configure it accordingly.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN wget https:\/\/raw.githubusercontent.com\/wildfly\/wildfly-core\/master\/core-feature-pack\/src\/main\/resources\/content\/docs\/contrib\/scripts\/init.d\/wildfly-init-redhat.sh -O \/etc\/rc.d\/init.d\/wildfly;\r\nsed -i \"\/# Source function library\/a\\SYSTEMCTL_SKIP_REDIRECT=1\" \/etc\/init.d\/wildfly; chmod +x \/etc\/init.d\/wildfly;<\/code><\/pre>\n<p><strong>Step 8.<\/strong> Next, we&#8217;ll set up WildFly to run on container startup by creating the appropriate system user and setting file ownership accordingly.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN chkconfig --add wildfly; chkconfig wildfly on; mkdir -p \/var\/log\/wildfly; adduser wildfly;\r\nchown -R wildfly:wildfly \/opt\/wildfly-$WILDFLY_VERSION \/opt\/wildfly \/var\/log\/wildfly;<\/code><\/pre>\n<p><strong>Step 9.<\/strong> In addition, we will enter the user credentials defined in the first instruction step for accessing the server&#8217;s admin panel.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN \/opt\/wildfly\/bin\/add-user.sh --user $ADMIN_USER --password $ADMIN_PASSWORD --silent --enable<\/code><\/pre>\n<p><strong>Step 10.<\/strong> We can now adjust the URL to the admin panel on the default index.html page by specifying the proper redirect. This ensures that the admin panel may be accessed properly, especially if our image is deployed to a container without an external IP address, via port 4949 and an HTTP connection.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN sed -i \"s\/&lt;a href=\\\"\\\/console\\\"&gt;\/&lt;a href=\\\"\\\/console\\\" onclick=\\\"javascript:event.target.port=4949;event.target.protocol=\\'http:\\';\\\"&gt;\/\" \/opt\/wildfly\/welcome-content\/index.html<\/code><\/pre>\n<p><strong>Step 11.<\/strong> Add the English <a class=\"ack-link-color\" href=\"https:\/\/accuweb.cloud\/resource\/articles\/manage-locale-settings\/\">locale settings<\/a> to the container.<\/p>\n<pre><code class=\"language-javascript\">\r\nRUN localedef -i en_US -f UTF-8 en_US.UTF-8<\/code><\/pre>\n<p><strong>Step 12.<\/strong> Another step is to configure our Docker image to listen on the specified ports during runtime. This can be achieved using the &#8216;EXPOSE&#8217; command.<\/p>\n<pre><code class=\"language-javascript\">\r\nEXPOSE 22 80 443 8080 8743 9990 9993 8009 4848 4949<\/code><\/pre>\n<p><strong>Step 13.<\/strong> Finally, specify &#8216;ENTRYPOINT&#8217; to define the container&#8217;s executable. In this scenario, we&#8217;ll specify the bash shell.<\/p>\n<pre><code class=\"language-javascript\">\r\nENTRYPOINT [\"\/bin\/bash\"]<\/code><\/pre>\n<p>That is it! Remember to save all of the required settings to complete the dockerfile and make it ready for use.<\/p>\n<div class=\"article-space\"><\/div>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"38668\" class=\"elementor elementor-38668\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"elementor_library\">\n\t\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-882321f elementor-section-boxed elementor-section-height-default elementor-section-height-default ct-header-fixed-none ct-row-max-none\" data-id=\"882321f\" data-element_type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n            \n                        <div class=\"elementor-container elementor-column-gap-default \">\n                    <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7cc79cc\" data-id=\"7cc79cc\" data-element_type=\"column\">\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\n                    \n        \t\t<div class=\"elementor-element elementor-element-e31b40f elementor-widget elementor-widget-shortcode\" data-id=\"e31b40f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\n        <\/div>\n                    <\/div>\n        <\/section>\n        \t\t<\/div>\n\t\t\n<div class=\"article-space\"><\/div>\n<h2 id=\"add-image-to-repository\" class=\"ack-h2\">Adding Image to Repository<\/h2>\n<p>Once you&#8217;ve created the required dockerfile, you can build your WildFly image and push it to the repository.<\/p>\n<p>To proceed, follow these steps:<\/p>\n<p><strong>Step 1.<\/strong> Execute the `docker build` command with the necessary parameters to create a new image locally.<\/p>\n<pre><code class=\"language-javascript\">\r\nsudo docker build -t {image_name} {dockerfile_location}<\/code><\/pre>\n<p><strong>Here are the details:<\/strong><\/p>\n<ul class=\"ack-ul\">\n<li><strong>{image_name}:<\/strong> This refers to the name of the image repository. Optionally, you can add a version tag after the colon separator (e.g., `jelastic\/wildfly:latest`).<\/li>\n<li><strong>{dockerfile_location}:<\/strong> This can be either a local path or a URL to your dockerfile. If the file is in the current directory, you can set this as `&#8221;.&#8221;`.<\/li>\n<\/ul>\n<p>Next steps:<\/p>\n<p><strong>Step 2.<\/strong> After running the &#8216;docker build&#8217; command, you should see a build success message with the ID of your new image. To ensure that it is available on your workstation, you can obtain a list of all local photos with:<\/p>\n<pre><code class=\"language-javascript\">\r\nsudo docker images<\/code><\/pre>\n<p><strong>Step 3.<\/strong> Finally, upload your image to a registry using the proper command.<\/p>\n<pre><code class=\"language-javascript\">\r\nsudo docker push {image_name}<\/code><\/pre>\n<p>For this step, specify the `{image_name}` identically to the one used during the image-building process in the first step.<\/p>\n<p>By additionally authenticating your account ownership by entering the correct username password and email you can complete the procedure.<\/p>\n<div class=\"article-space\"><\/div>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"38668\" class=\"elementor elementor-38668\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"elementor_library\">\n\t\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-882321f elementor-section-boxed elementor-section-height-default elementor-section-height-default ct-header-fixed-none ct-row-max-none\" data-id=\"882321f\" data-element_type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n            \n                        <div class=\"elementor-container elementor-column-gap-default \">\n                    <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7cc79cc\" data-id=\"7cc79cc\" data-element_type=\"column\">\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\n                    \n        \t\t<div class=\"elementor-element elementor-element-e31b40f elementor-widget elementor-widget-shortcode\" data-id=\"e31b40f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\n        <\/div>\n                    <\/div>\n        <\/section>\n        \t\t<\/div>\n\t\t\n<div class=\"article-space\"><\/div>\n<h2 id=\"deploying-image-at-platform\" class=\"ack-h2\">Deploying Image at Platform<\/h2>\n<p>Once your image has been successfully stored in the repository, it will be available for use on the platform and may be added to an environment using the specific Docker board embedded into the <a class=\"ack-link-color\" href=\"https:\/\/accuweb.cloud\/resource\/articles\/custom-container-deployment\/\" target=\"_blank\" rel=\"noopener\">topology wizard<\/a> dashboard.<\/p>\n<p>To proceed, select the &#8220;New Environment&#8221; button at the top of the dashboard, then navigate to the Docker tab under the environment wizard, and finally click the &#8220;Select Image&#8221; button.<\/p>\n<p>1. In this section, you have two options:<\/p>\n<ul class=\"ack-ul\">\n<li>Use the Search tab to add an image from the Docker Hub repository.<\/li>\n<li>Switch to the Custom section, where you can work with images of any type, including private ones, and store your templates for easy access.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository.png\"><img decoding=\"async\" class=\"ack-article-image aligncenter wp-image-40538 size-full\" title=\"Search Docker hub repository\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository.png\" alt=\"Search Docker hub repository\" width=\"1222\" height=\"757\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository.png 1222w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository-300x186.png 300w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository-1024x634.png 1024w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Search-Docker-hub-repository-768x476.png 768w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/a><\/p>\n<p>Let us focus on the second alternative. Once inside, navigate to the required environment layer on the left (in this case, &#8220;App. Servers&#8221;) and click the &#8220;<strong>Add New Image<\/strong>&#8221; button.<\/p>\n<p>In the opened &#8220;<strong>Add New Image<\/strong>&#8221; frame, enter your image identifier in the &#8220;Name&#8221; field following this format:<\/p>\n<pre><code class=\"language-javascript\">\r\n{registry_hostname} (can be skipped for official Hub Registry) \/ {account} \/ {image_name}<\/code><\/pre>\n<p>If you are using a private repository, make sure to provide the appropriate Username and Password credentials.<\/p>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image.png\"><img decoding=\"async\" class=\"ack-article-image aligncenter wp-image-40539 size-full\" title=\"Add new image\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image.png\" alt=\"Add new image\" width=\"1225\" height=\"761\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image.png 1225w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image-300x186.png 300w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image-1024x636.png 1024w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Add-new-image-768x477.png 768w\" sizes=\"(max-width: 1225px) 100vw, 1225px\" \/><\/a><\/p>\n<p>We&#8217;re utilizing the public Docker Hub repository, which is part of the main Registry Hub, so only the short repository name is required. When you are ready, click the <strong>&#8220;Add&#8221;<\/strong> button.<\/p>\n<p>Once added, your image will appear on the list. From here, you may add it to the topology with a single click. Furthermore, this template will be preserved and placed here for future use, making it easier to access during subsequent container selections (unless manually removed from the Custom list).<\/p>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository.png\"><img loading=\"lazy\" decoding=\"async\" class=\"ack-article-image aligncenter wp-image-40540 size-full\" title=\"Docker repository\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository.png\" alt=\"Docker repository\" width=\"1226\" height=\"761\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository.png 1226w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository-300x186.png 300w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository-1024x636.png 1024w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Docker-repository-768x477.png 768w\" sizes=\"(max-width: 1226px) 100vw, 1226px\" \/><\/a><\/p>\n<p>Complete the remaining <a class=\"ack-link-color\" href=\"https:\/\/accuweb.cloud\/resource\/articles\/docker-engine-deployment\" target=\"_blank\" rel=\"noopener\">configurations<\/a> based on your requirements (see the attached guide for more information on available options) and finish the environment creation.<\/p>\n<p>Once your environment with the appropriate image shows on the dashboard, click the &#8220;<strong>Open in Browser<\/strong>&#8221; option connected with it.<\/p>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created.png\"><img loading=\"lazy\" decoding=\"async\" class=\"ack-article-image aligncenter wp-image-40541 size-full\" title=\"Environment created\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created.png\" alt=\"Environment created\" width=\"1547\" height=\"158\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created.png 1547w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created-300x31.png 300w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created-1024x105.png 1024w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created-768x78.png 768w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/Environment-created-1536x157.png 1536w\" sizes=\"(max-width: 1547px) 100vw, 1547px\" \/><\/a><\/p>\n<p>As a consequence, you will be taken to the usual WildFly start page, which confirms that everything is properly configured and that your freshly created container is completely operational.<\/p>\n<p><a href=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard.png\"><img loading=\"lazy\" decoding=\"async\" class=\"ack-article-image aligncenter wp-image-40542 size-full\" title=\"WildFly dashboard\" src=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard.png\" alt=\"WildFly dashboard\" width=\"1600\" height=\"791\" srcset=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard.png 1600w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard-300x148.png 300w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard-1024x506.png 1024w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard-768x380.png 768w, https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/05\/WildFly-dashboard-1536x759.png 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/a><\/p>\n<p>Using the procedures outlined above, you may generate any other preloaded image adapted to your individual requirements and execute it seamlessly within the platform!<\/p>\n<div class=\"cta-btn-top-space\"><\/div>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"38668\" class=\"elementor elementor-38668\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"elementor_library\">\n\t\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-882321f elementor-section-boxed elementor-section-height-default elementor-section-height-default ct-header-fixed-none ct-row-max-none\" data-id=\"882321f\" data-element_type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n            \n                        <div class=\"elementor-container elementor-column-gap-default \">\n                    <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7cc79cc\" data-id=\"7cc79cc\" data-element_type=\"column\">\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\n                    \n        \t\t<div class=\"elementor-element elementor-element-e31b40f elementor-widget elementor-widget-shortcode\" data-id=\"e31b40f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\n        <\/div>\n                    <\/div>\n        <\/section>\n        \t\t<\/div>\n\t\t\n<div class=\"cta-btn-mob-space\"><\/div>\n","protected":false},"author":1,"featured_media":52879,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","class_list":["post-40534","faq","type-faq","status-publish","has-post-thumbnail","hentry","faq_topics-building-custom-container","faq_topics-containers","faq_topics-kb","faq_topics-product-documentation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.10 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Build a custom container using dockerfile | AccuWeb.Cloud<\/title>\n<meta name=\"description\" content=\"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building Custom Container\" \/>\n<meta property=\"og:description\" content=\"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\" \/>\n<meta property=\"og:site_name\" content=\"AccuWeb Cloud\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-19T06:24:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#article\",\"isPartOf\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\"},\"author\":{\"name\":\"Jilesh Patadiya\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/a7a4cbe8405202b537509c757b588c58\"},\"headline\":\"Building Custom Container\",\"datePublished\":\"2024-05-07T13:29:46+00:00\",\"dateModified\":\"2026-02-19T06:24:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\"},\"wordCount\":1255,\"publisher\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/#organization\"},\"image\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage\"},\"thumbnailUrl\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg\",\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\",\"url\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\",\"name\":\"Build a custom container using dockerfile | AccuWeb.Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage\"},\"image\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage\"},\"thumbnailUrl\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg\",\"datePublished\":\"2024-05-07T13:29:46+00:00\",\"dateModified\":\"2026-02-19T06:24:58+00:00\",\"description\":\"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.\",\"breadcrumb\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage\",\"url\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg\",\"contentUrl\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/accuweb.cloud\/resource\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building Custom Container\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#website\",\"url\":\"https:\/\/accuweb.cloud\/resource\/\",\"name\":\"AccuWeb Cloud\",\"description\":\"Cutting Edge Cloud Computing\",\"publisher\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/accuweb.cloud\/resource\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#organization\",\"name\":\"AccuWeb.Cloud\",\"url\":\"https:\/\/accuweb.cloud\/resource\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/04\/accuwebcloud_logo_black_tagline.jpg\",\"contentUrl\":\"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/04\/accuwebcloud_logo_black_tagline.jpg\",\"width\":156,\"height\":87,\"caption\":\"AccuWeb.Cloud\"},\"image\":{\"@id\":\"https:\/\/accuweb.cloud\/resource\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/a7a4cbe8405202b537509c757b588c58\",\"name\":\"Jilesh Patadiya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2cea2bdb5bbabb771ee67e96acad7396f25cb1a0c360b9bc4a9ac40cea9cd8b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2cea2bdb5bbabb771ee67e96acad7396f25cb1a0c360b9bc4a9ac40cea9cd8b2?s=96&d=mm&r=g\",\"caption\":\"Jilesh Patadiya\"},\"description\":\"Jilesh Patadiya, the visionary Co-Founder and Chief Technology Officer (CTO) behind AccuWeb.Cloud. Founder &amp; CTO at AccuWebHosting.com. He shares his web hosting insights on the AccuWeb.Cloud blog. He mostly writes on the latest web hosting trends, WordPress, storage technologies, and Windows and Linux hosting platforms.\",\"sameAs\":[\"https:\/\/accuweb.cloud\/resource\",\"https:\/\/www.facebook.com\/accuwebhosting\",\"https:\/\/www.instagram.com\/accuwebhosting\/\",\"https:\/\/www.linkedin.com\/company\/accuwebhosting\/\",\"https:\/\/x.com\/accuwebhosting\",\"https:\/\/www.youtube.com\/c\/Accuwebhosting\"],\"url\":\"https:\/\/accuweb.cloud\/resource\/author\/accuwebadmin\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Build a custom container using dockerfile | AccuWeb.Cloud","description":"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container","og_locale":"en_US","og_type":"article","og_title":"Building Custom Container","og_description":"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.","og_url":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container","og_site_name":"AccuWeb Cloud","article_modified_time":"2026-02-19T06:24:58+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#article","isPartOf":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container"},"author":{"name":"Jilesh Patadiya","@id":"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/a7a4cbe8405202b537509c757b588c58"},"headline":"Building Custom Container","datePublished":"2024-05-07T13:29:46+00:00","dateModified":"2026-02-19T06:24:58+00:00","mainEntityOfPage":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container"},"wordCount":1255,"publisher":{"@id":"https:\/\/accuweb.cloud\/resource\/#organization"},"image":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage"},"thumbnailUrl":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg","inLanguage":"en-US"},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container","url":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container","name":"Build a custom container using dockerfile | AccuWeb.Cloud","isPartOf":{"@id":"https:\/\/accuweb.cloud\/resource\/#website"},"primaryImageOfPage":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage"},"image":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage"},"thumbnailUrl":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg","datePublished":"2024-05-07T13:29:46+00:00","dateModified":"2026-02-19T06:24:58+00:00","description":"Build a custom container in AccuWeb.Cloud platform. Follow this guide tat provides instructions for creating dockerized application.","breadcrumb":{"@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#primaryimage","url":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg","contentUrl":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/07\/NEW-OG-IMAGE-URL.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/accuweb.cloud\/resource\/articles\/building-custom-container#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/accuweb.cloud\/resource\/"},{"@type":"ListItem","position":2,"name":"Building Custom Container"}]},{"@type":"WebSite","@id":"https:\/\/accuweb.cloud\/resource\/#website","url":"https:\/\/accuweb.cloud\/resource\/","name":"AccuWeb Cloud","description":"Cutting Edge Cloud Computing","publisher":{"@id":"https:\/\/accuweb.cloud\/resource\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/accuweb.cloud\/resource\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/accuweb.cloud\/resource\/#organization","name":"AccuWeb.Cloud","url":"https:\/\/accuweb.cloud\/resource\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/accuweb.cloud\/resource\/#\/schema\/logo\/image\/","url":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/04\/accuwebcloud_logo_black_tagline.jpg","contentUrl":"https:\/\/accuweb.cloud\/resource\/wp-content\/uploads\/2024\/04\/accuwebcloud_logo_black_tagline.jpg","width":156,"height":87,"caption":"AccuWeb.Cloud"},"image":{"@id":"https:\/\/accuweb.cloud\/resource\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/a7a4cbe8405202b537509c757b588c58","name":"Jilesh Patadiya","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/accuweb.cloud\/resource\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2cea2bdb5bbabb771ee67e96acad7396f25cb1a0c360b9bc4a9ac40cea9cd8b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2cea2bdb5bbabb771ee67e96acad7396f25cb1a0c360b9bc4a9ac40cea9cd8b2?s=96&d=mm&r=g","caption":"Jilesh Patadiya"},"description":"Jilesh Patadiya, the visionary Co-Founder and Chief Technology Officer (CTO) behind AccuWeb.Cloud. Founder &amp; CTO at AccuWebHosting.com. He shares his web hosting insights on the AccuWeb.Cloud blog. He mostly writes on the latest web hosting trends, WordPress, storage technologies, and Windows and Linux hosting platforms.","sameAs":["https:\/\/accuweb.cloud\/resource","https:\/\/www.facebook.com\/accuwebhosting","https:\/\/www.instagram.com\/accuwebhosting\/","https:\/\/www.linkedin.com\/company\/accuwebhosting\/","https:\/\/x.com\/accuwebhosting","https:\/\/www.youtube.com\/c\/Accuwebhosting"],"url":"https:\/\/accuweb.cloud\/resource\/author\/accuwebadmin"}]}},"_links":{"self":[{"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/faq\/40534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/faq"}],"about":[{"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/types\/faq"}],"author":[{"embeddable":true,"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/comments?post=40534"}],"version-history":[{"count":11,"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/faq\/40534\/revisions"}],"predecessor-version":[{"id":53289,"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/faq\/40534\/revisions\/53289"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/media\/52879"}],"wp:attachment":[{"href":"https:\/\/accuweb.cloud\/resource\/wp-json\/wp\/v2\/media?parent=40534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}