{"id":4511,"date":"2019-10-06T19:16:26","date_gmt":"2019-10-06T17:16:26","guid":{"rendered":"https:\/\/www.dontesta.it\/?p=4511"},"modified":"2019-10-06T19:21:02","modified_gmt":"2019-10-06T17:21:02","slug":"how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support","status":"publish","type":"post","link":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/","title":{"rendered":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support"},"content":{"rendered":"<p style=\"text-align: justify;\">In the recently published article <strong><a href=\"https:\/\/www.dontesta.it\/2019\/08\/21\/how-to-build-a-docker-liferay-7-2-image-with-the-oracle-database-support\/\">How to build Docker Liferay 7.2 image with the Oracle Database support<\/a><\/strong>, I explained how to create the Liferay 7.2 Docker image by adding support to the Oracle database and in particular I explained how to do it using Blade CLI and Liferay Workspace.<\/p>\r\n<p style=\"text-align: justify;\">In this article we will see how to achieve the same goal (from the previous article) but adding support for <a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft SQL Server 2017<\/a>. The <a href=\"https:\/\/web.liferay.com\/documents\/14\/21598941\/Liferay+DXP+7.2+Compatibility+Matrix\/b6e0f064-db31-49b4-8317-a29d1d76abf7?\" target=\"_blank\" rel=\"noopener noreferrer\">Liferay Digital Experience Platform 7.2 Compatibility Matrix<\/a> indicated <strong>SQL Server 2017<\/strong> among the certified databases.<\/p>\r\n<p>The source code of the Liferay Workspace it\u2019s available on this GitHub repository\u00a0<a href=\"https:\/\/github.com\/amusarra\/liferay-72-sqlserver-docker-images\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"broken_link\">liferay-72-sqlserver-docker-images<\/a>. \u00a0<\/p>\r\n<h2>1. What are the requirements<\/h2>\r\n<p style=\"text-align: justify;\">Before proceeding with the construction of the Docker image, the following requirements must be met.<\/p>\r\n<ol>\r\n<li>Installation or upgrade to the latest version of Blade;<\/li>\r\n<li>Docker Engine 18.x,19.x;<\/li>\r\n<li>An instance of an SQL Server 2017 database.<\/li>\r\n<\/ol>\r\n<p style=\"text-align: justify;\">For the installation and updating of Blade CLI you could refer to this official Liferay documentation:\u00a0<a href=\"https:\/\/portal.liferay.dev\/docs\/7-2\/reference\/-\/knowledge_base\/r\/installing-blade-cli\" target=\"_blank\" rel=\"noopener noreferrer\">Installing Blade CLI<\/a>\u00a0and\u00a0<a href=\"https:\/\/portal.liferay.dev\/docs\/7-2\/reference\/-\/knowledge_base\/r\/updating-blade-cli\" target=\"_blank\" rel=\"noopener noreferrer\">Updating Blade CLI<\/a>. The latest version is 3.8.0.201909200317. You can use this command <code>blade version<\/code>\u00a0for checking your version.<\/p>\r\n<p style=\"text-align: justify;\">Regarding the version of\u00a0<a href=\"https:\/\/docs.docker.com\/engine\/release-notes\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker<\/a>\u00a0I used both the version 18.09.8 and the 19.03.1. You can check your version with the\u00a0<code>docker version<\/code> command. If you do not have an SQL Server 2017 instance ready for use, you might consider using this official Docker image from <a href=\"https:\/\/hub.docker.com\/_\/microsoft-mssql-server\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft's Docker Hub<\/a> account to your local computer and starting that image.<\/p>\r\n<p style=\"text-align: justify;\">We need to have an instance of SQL Server already configured to host Liferay. No problem, in this article, <strong><a href=\"https:\/\/www.dontesta.it\/2019\/10\/03\/how-to-setup-docker-container-sql-server-2017-for-liferay-development-environment\/\">How to setup Docker container SQL Server 2017 for Liferay Development Environment<\/a><\/strong>, I will explain how to do it.<\/p>\r\n<p>&nbsp;<\/p>\r\n<h2>2. Create the Liferay Workspace and Dockerfile<\/h2>\r\n<p style=\"text-align: justify;\">First of all we have to worry about creating the Liferay Workspace that we will use in order to configure and build our docker image. Let's proceed in this way to create the Liferay Workspace.<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 1 - Create new Liferay Workspace (v7.2) and create Dockerfile via Grade\">$ blade init -v 7.2 liferay-72-sqlserver-docker-images\r\n$ cd liferay-72-sqlserver-docker-images\r\n$ blade gw createDockerfile<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">The first command initializes the Liferay Workspace while the last command using the Gradle <strong>createDockerfile<\/strong> task that creates the <a href=\"https:\/\/docs.docker.com\/engine\/reference\/builder\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Dockerfile<\/strong><\/a>. The Gradle task execution creates a new directory structure and the Dockerfile. The new directory structure and file created is shown below (command <code>tree -L 3 build<\/code>).<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 2 - A new build directory were created\">build\r\n\u2514\u2500\u2500 docker\r\n    \u251c\u2500\u2500 Dockerfile\r\n    \u251c\u2500\u2500 deploy\r\n    \u2514\u2500\u2500 files<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">The created Dockerfile is not good because it contains the reference to the base image of Liferay 7.1. We instead need version 7.2 of Liferay.<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 3 - Content of the Dockerfile\">FROM liferay\/portal:7.1.1-ga2\r\nCOPY --chown=liferay:liferay deploy \/etc\/liferay\/mount\/deploy\r\nCOPY --chown=liferay:liferay files \/etc\/liferay\/mount\/files<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">In order for the Dockerfile to be created with the correct version of the Liferay image, the following content must be inserted in the <strong>gradle-local.properties<\/strong> file. The specific image has been set on the <strong>liferay.workspace.docker.image.liferay<\/strong> property. To find the possible property values you can set, see the official Liferay Portal Docker Hub\u2019s Tags section (e.g.,\u00a0<a href=\"https:\/\/hub.docker.com\/r\/liferay\/portal\/tags\">Liferay Portal Docker Tags<\/a>). In our case we want to get the version 7.2 GA1 of Liferay Portal: <em><strong>liferay\/portal:7.2.0-ga1<\/strong><\/em><\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Source Code 1 - Update liferay docker image via gradle-local.properties\">#\r\n# Set the Liferay Portal Docker image to create your container from. The\r\n# default value points to Liferay Portal CE 7.2 GA1.\r\n#\r\n# I could easily swing out to https:\/\/hub.docker.com\/r\/liferay\/portal\/tags\r\n# to find that there is an updated tag\r\n#\r\nliferay.workspace.docker.image.liferay=liferay\/portal:7.2.0-ga1<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">At this point we re-launch the Gradle <strong>createDockerfile<\/strong> task to recreate the new Dockerfile. Now the FROM directive of the Dockerfile contains the correct version of the image.<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 4 - Content of the Dockerfile\">FROM liferay\/portal:7.2.0-ga1\r\nCOPY --chown=liferay:liferay deploy \/etc\/liferay\/mount\/deploy\r\nCOPY --chown=liferay:liferay files \/etc\/liferay\/mount\/files<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">Before proceeding further, you need to update the version of <strong>com.liferay.gradle.plugins.workspace<\/strong> from 2.0.4 to 2.1.5. The change must be made to the settings.gradle file. From version 3.8 of blade it is no longer necessary to update the version of the plugin because it is already correct.<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:java mark:3 decode:true\" title=\"Source Code 2 - Update com.liferay.gradle.plugins.workspace to version 2.1.3\">buildscript {\r\n        dependencies {\r\n                classpath group: \"com.liferay\", name: \"com.liferay.gradle.plugins.workspace\", version: \"2.1.5\"\r\n                classpath group: \"net.saliman\", name: \"gradle-properties-plugin\", version: \"1.4.6\"\r\n        }\r\n\r\n        repositories {\r\n                maven {\r\n                        url \"https:\/\/repository-cdn.liferay.com\/nexus\/content\/groups\/public\"\r\n                }\r\n        }\r\n}\r\n\r\napply plugin: \"net.saliman.properties\"\r\napply plugin: \"com.liferay.workspace\"<\/pre>\r\n<p>&nbsp;<\/p>\r\n<h2>3. Docker image configuration<\/h2>\r\n<p style=\"text-align: justify;\">Now all that remains to do is configure our personalized image of Liferay 7.2 so that it is able to connect to an SQL Server database.<\/p>\r\n<p style=\"text-align: justify;\">The <strong>configs\/docker<\/strong> folder is where your configuration and overlay files for your Docker image. You'll put files here such as your portal-ext.properties file, your osgi\/configs files, overrides for the tomcat-9.0.x files (where x is going to be the version of tomcat included in the bundle), etc.<\/p>\r\n<p>What do you need for configuring the new image?<\/p>\r\n<ol>\r\n<li>JDBC Driver for <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/connect\/jdbc\/microsoft-jdbc-driver-for-sql-server?view=sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Server 2017<\/a> (version <a href=\"https:\/\/go.microsoft.com\/fwlink\/?linkid=2099962\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"broken_link\">7.4<\/a>);<\/li>\r\n<li><a href=\"https:\/\/github.com\/amusarra\/liferay-portal-database-all-in-one-support\" target=\"_blank\" rel=\"noopener noreferrer\">Liferay Portal Database All-in-One support<\/a> (download from <a href=\"https:\/\/repo1.maven.org\/maven2\/it\/dontesta\/labs\/liferay\/portal\/db\/liferay-portal-database-all-in-one-support\/1.1.3\/liferay-portal-database-all-in-one-support-1.1.3.jar\" target=\"_blank\" rel=\"noopener noreferrer\">Maven Repository<\/a>);<\/li>\r\n<li>Configuring the connection to the SQL Server database via portal-ext.properties<\/li>\r\n<\/ol>\r\n<p>The commands shown below do:<\/p>\r\n<ol>\r\n<li>The creation of the portal-ext.properties file whose content is shown below;<\/li>\r\n<li>The creation of the directory <em>configs\/docker\/tomcat\/lib\/ext<\/em> where the SQL Server JDBC driver will be installed;<\/li>\r\n<li>The creation of the directory <em>configs\/docker\/tomcat\/webapps\/ROOT\/WEB-INF\/lib<\/em> where the Liferay driver will be installed for SQL Server database support;<\/li>\r\n<li>The copy of the driver <em>liferay-portal-database-all-in-one-support<\/em> in <em>configs\/docker\/tomcat\/webapps\/ROOT\/WEB-INF\/lib<\/em>.<\/li>\r\n<\/ol>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 5 - Create a new directory structure for Oracle JDBC driver and Liferay Oracle DB driver \">$ touch configs\/docker\/portal-ext.properties\r\n$ mkdir -p configs\/docker\/tomcat\/lib\/ext\r\n$ mkdir -p configs\/docker\/tomcat\/webapps\/ROOT\/WEB-INF\/lib\r\n$ curl https:\/\/repo1.maven.org\/maven2\/it\/dontesta\/labs\/liferay\/portal\/db\/liferay-portal-database-all-in-one-support\/1.1.3\/liferay-portal-database-all-in-one-support-1.1.3.jar -o configs\/docker\/tomcat-9.0.17\/webapps\/ROOT\/WEB-INF\/lib\/liferay-portal-database-all-in-one-support-1.1.3.jar<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">The <strong>portal-ext.properties<\/strong> file you see, configuring the JDBC connection to the SQL Server database also enables access to the GogoShell.<\/p>\r\n<p>&nbsp;<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:ini decode:true\" title=\"Source Code 3 - Setting JDBC connection for Oracle Database\">##\r\n## JDBC\r\n##\r\n    #\r\n    # Set the JNDI name to lookup the JDBC data source. If none is set,\r\n    # then the portal will attempt to create the JDBC data source based on the\r\n    # properties prefixed with \"jdbc.default.\".\r\n    #\r\n    #jdbc.default.jndi.name=jdbc\/LiferayPool\r\n\r\n    #\r\n    # Set the properties used to create the JDBC data source. These properties\r\n    # will only be read if the property \"jdbc.default.jndi.name\" is not set.\r\n    #\r\n    # The default settings are configured for an in-memory database called\r\n    # Hypersonic that is not recommended for production use. Please change the\r\n    # properties to use another database.\r\n    #\r\n    # Add dynamic-data-source-spring.xml to the property \"spring.configs\" to\r\n    # configure the portal to use one database cluster for read calls and\r\n    # another database cluster for write calls. The convention is to create a\r\n    # set of properties prefixed with \"jdbc.read.\" to handle read calls and\r\n    # another set of properties prefixed with \"jdbc.write.\" to handle write\r\n    # calls. These data sources can also be created via JNDI by setting the\r\n    # properties \"jdbc.read.jndi.name\" and \"jdbc.write.jndi.name\". Note that\r\n    # these settings, though separate, are a copy of the default settings with\r\n    # the newly overridden values.\r\n    #\r\n\r\n    #\r\n    # SQL Server\r\n    #\r\n    jdbc.default.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n    jdbc.default.username=liferay\r\n    jdbc.default.password=lportal@DEV@72\r\n    jdbc.default.url=jdbc:sqlserver:\/\/172.17.0.3;databaseName=lportal_dev\r\n##\r\n## Module Framework\r\n##\r\n    #\r\n    # Gogo Shell listen (ip:port)\r\n    #\r\n    module.framework.properties.osgi.console=11311<\/pre>\r\n<p>At this point we re-launch the Gradle <em>createDockerfile<\/em> task, but specify the environment using the parameter <em><strong>-Pliferay.workspace.environment=docker <\/strong><\/em>(<code>blade gw clean createDockerfile -Pliferay.workspace.environment=docker<\/code>). This time the contents of the <strong>build\/docker<\/strong> directory will also contain our configurations.<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 5 - Output of the command tree -L 7 build\/docker after run gradle task createDockerfile\">build\/docker\r\n\u251c\u2500\u2500 Dockerfile\r\n\u251c\u2500\u2500 deploy\r\n\u2514\u2500\u2500 files\r\n    \u251c\u2500\u2500 portal-ext.properties\r\n    \u2514\u2500\u2500 tomcat\r\n        \u251c\u2500\u2500 lib\r\n        \u2502   \u2514\u2500\u2500 ext\r\n        \u2502     \u2514\u2500\u2500 mssql-jdbc-7.4.1.jre8-shaded.jar\r\n        \u2514\u2500\u2500 webapps\r\n            \u2514\u2500\u2500 ROOT\r\n                \u2514\u2500\u2500 WEB-INF\r\n                    \u2514\u2500\u2500 lib\r\n                        \u2514\u2500\u2500 liferay-portal-database-all-in-one-support-1.1.3.jar<\/pre>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">Note that this step (the execution of the Gradle task createDockerfile) is not typically needed. I'm just using this command so I can see what will be used for the Docker image without actually creating the image yet.<\/p>\r\n<p>&nbsp;<\/p>\r\n<h2>4. Build and run the Docker image<\/h2>\r\n<p style=\"text-align: justify;\">At this point we can proceed with the build of our Docker Liferay 7.2 image with support for the SQL Server database. The Gradle <strong>buildDockerImage<\/strong>\u00a0task does just that.<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 lang:sh decode:true\" title=\"Console 7 - Build docker image\">$ blade gw clean buildDockerImage -Pliferay.workspace.environment=docker<\/pre>\r\n<p style=\"text-align: justify;\">The figure below shows the output of the Gradle task execution, while the following figure shows the details of the image just created.<\/p>\r\n<div id=\"attachment_4516\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheBuildDockerImageLiferaySQLServerGradleTask.png\"><img aria-describedby=\"caption-attachment-4516\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-4516 size-large\" title=\"Figure 1 - Output of the gradle buildDockerImage task\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheBuildDockerImageLiferaySQLServerGradleTask-1024x363.png\" alt=\"Figure 1 - Output of the gradle buildDockerImage task\" width=\"1024\" height=\"363\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheBuildDockerImageLiferaySQLServerGradleTask-1024x363.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheBuildDockerImageLiferaySQLServerGradleTask-300x106.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheBuildDockerImageLiferaySQLServerGradleTask-768x272.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4516\" class=\"wp-caption-text\">Figure 1 - Output of the gradle buildDockerImage task<\/p><\/div>\r\n<p>As you can see from figure 2, the docker environment is used as a tag of our image (<em>liferay-72-sqlserver-docker-images:docker<\/em>).<\/p>\r\n<div id=\"attachment_4517\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerCommand.png\"><img aria-describedby=\"caption-attachment-4517\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-4517\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerCommand-1024x63.png\" alt=\"Figure 2 - Output of the command docker image ls\" width=\"1024\" height=\"63\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerCommand-1024x63.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerCommand-300x18.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerCommand-768x47.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4517\" class=\"wp-caption-text\">Figure 2 - Output of the command docker image ls<\/p><\/div>\r\n<p>Before creating and running our Liferay container, we need to make sure that the SQL Server instance is running but if you have read the article\u00a0<strong><a href=\"https:\/\/www.dontesta.it\/2019\/10\/03\/how-to-setup-docker-container-sql-server-2017-for-liferay-development-environment\/\">How to setup Docker container SQL Server 2017 for Liferay Development Environment<\/a><\/strong> I guess that SQL Server instance is running.<\/p>\r\n<div id=\"attachment_4518\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerPsCommand_1.png\"><img aria-describedby=\"caption-attachment-4518\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-4518 size-large\" title=\"Figure 3 - Check if SQL Server 2017 instance is running\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerPsCommand_1-1024x78.png\" alt=\"Figure 3 - Check if SQL Server 2017 instance is running\" width=\"1024\" height=\"78\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerPsCommand_1-1024x78.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerPsCommand_1-300x23.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerPsCommand_1-768x59.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4518\" class=\"wp-caption-text\">Figure 3 - Check if SQL Server 2017 instance is running<\/p><\/div>\r\n<p>All that remains is to start our image and we can do it with the command to follow. The docker command makes sure to expose ports 8080 (web) and 11311 (Gogo Shell). It also makes sure to use the volume to allow us to easily deploy our applications, just copy the bundles into the <em><strong>$(pwd)\/build\/docker\/deploy<\/strong><\/em> directory.<\/p>\r\n<pre class=\"theme:solarized-dark toolbar:1 wrap:true lang:sh decode:true\" title=\"Console 8 - Run docker image\">$ docker run -d -it --name Liferay72-SQLServer \\\r\n\t-p 8080:8080 -p 11311:11311 \\\r\n\t-v $(pwd)\/build\/docker:\/etc\/liferay\/mount \\\r\n\t-P liferay-72-sqlserver-docker-images:docker<\/pre>\r\n<p style=\"text-align: justify;\">To view the Liferay logs you need to run the command <code>docker logs -f Liferay72-SQLServer<\/code>. The Docker command to access the machine is shown on the log.<\/p>\r\n<div id=\"attachment_4520\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerLogsCommand_1.png\"><img aria-describedby=\"caption-attachment-4520\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-4520\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerLogsCommand_1-1024x523.png\" alt=\"Figure 3 - Output of the Liferay log file\" width=\"1024\" height=\"523\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerLogsCommand_1-1024x523.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerLogsCommand_1-300x153.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerLogsCommand_1-768x393.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4520\" class=\"wp-caption-text\">Figure 3 - Output of the Liferay log file<\/p><\/div>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">You can monitor the status of our container using the <code>docker ps<\/code> command. Figure 4 shows the status and which TCP \/ IP ports are exposed.<\/p>\r\n<p>&nbsp;<\/p>\r\n<div id=\"attachment_4521\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerDockerPSCommand_1.png\"><img aria-describedby=\"caption-attachment-4521\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-4521\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerDockerPSCommand_1-1024x39.png\" alt=\"Figure 4 - Output of the command docker ps\" width=\"1024\" height=\"39\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerDockerPSCommand_1-1024x39.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerDockerPSCommand_1-300x11.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/OutputOfTheDockerImageLiferaySQLServerDockerPSCommand_1-768x29.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4521\" class=\"wp-caption-text\">Figure 4 - Output of the command docker ps<\/p><\/div>\r\n<p style=\"text-align: justify;\">Figure 5 shows the Oracle schema populated with Liferay tables at start-up.<\/p>\r\n<div id=\"attachment_4522\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/AzureDataStudioConnectedToLiferayDatabase.png\"><img aria-describedby=\"caption-attachment-4522\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-4522\" src=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/AzureDataStudioConnectedToLiferayDatabase-1024x358.png\" alt=\"Figure 5 - Get Liferay portal version from RELEASE_ table\" width=\"1024\" height=\"358\" srcset=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/AzureDataStudioConnectedToLiferayDatabase-1024x358.png 1024w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/AzureDataStudioConnectedToLiferayDatabase-300x105.png 300w, https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/AzureDataStudioConnectedToLiferayDatabase-768x268.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-4522\" class=\"wp-caption-text\">Figure 5 - Get Liferay portal version from RELEASE_ table<\/p><\/div>\r\n\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: justify;\">Docker has become increasingly popular in today\u2019s development lifecycle, by providing an automated way to package software and its dependencies into a standardized unit that can be shared cross-platform.<\/p>\r\n<p style=\"text-align: justify;\">You can now manage Liferay\u2019s Docker images in Liferay Workspace and push your Docker custom image on Docker Hub or other registry \ud83d\ude09 !<\/p>","protected":false},"excerpt":{"rendered":"<p>In the recently published article How to build Docker Liferay 7.2 image with the Oracle Database support, I explained how to create the Liferay 7.2 Docker image by adding support to the Oracle database&#46;&#46;&#46;<\/p>\n","protected":false},"author":3,"featured_media":4524,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[490,572,15,23],"tags":[671,637,595],"class_list":["post-4511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-2","category-data-base","category-liferay","category-rdbms","tag-docker","tag-liferay","tag-microsoft-sql-server"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support<\/title>\n<meta name=\"description\" content=\"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support\" \/>\n<meta property=\"og:description\" content=\"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\" \/>\n<meta property=\"og:site_name\" content=\"Antonio Musarra&#039;s Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/antoniomusarrablog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/antoniomusarrablog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-06T17:16:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-06T17:21:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png\" \/>\n\t<meta property=\"og:image:width\" content=\"722\" \/>\n\t<meta property=\"og:image:height\" content=\"342\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Musarra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@antonio_musarra\" \/>\n<meta name=\"twitter:site\" content=\"@antonio_musarra\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Musarra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\"},\"author\":{\"name\":\"Antonio Musarra\",\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"headline\":\"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support\",\"datePublished\":\"2019-10-06T17:16:26+00:00\",\"dateModified\":\"2019-10-06T17:21:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\"},\"wordCount\":1232,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"image\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png\",\"keywords\":[\"Docker\",\"Liferay\",\"Microsoft SQL Server\"],\"articleSection\":[\"Blog\",\"Data Base\",\"Liferay\",\"RDBMS\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\",\"url\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\",\"name\":\"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support\",\"isPartOf\":{\"@id\":\"https:\/\/www.dontesta.it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png\",\"datePublished\":\"2019-10-06T17:16:26+00:00\",\"dateModified\":\"2019-10-06T17:21:02+00:00\",\"description\":\"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage\",\"url\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png\",\"contentUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png\",\"width\":722,\"height\":342,\"caption\":\"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.dontesta.it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dontesta.it\/#website\",\"url\":\"https:\/\/www.dontesta.it\/\",\"name\":\"Antonio Musarra&#039;s Blog\",\"description\":\"The ideal solution for a problem\",\"publisher\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dontesta.it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\",\"name\":\"Antonio Musarra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png\",\"contentUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png\",\"width\":512,\"height\":512,\"caption\":\"Antonio Musarra\"},\"logo\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/\"},\"description\":\"I began my journey into the world of computing from an Olivetti M24 PC (http:\/\/it.wikipedia.org\/wiki\/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until \u2026 Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.\",\"sameAs\":[\"https:\/\/www.dontesta.it\",\"https:\/\/www.facebook.com\/antoniomusarrablog\",\"https:\/\/www.linkedin.com\/in\/amusarra\/\",\"https:\/\/x.com\/antonio_musarra\",\"https:\/\/www.youtube.com\/channel\/UC5D3_EtVPbZYUhrUcEK_THA\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support","description":"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.","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:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/","og_locale":"en_US","og_type":"article","og_title":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support","og_description":"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.","og_url":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/","og_site_name":"Antonio Musarra&#039;s Blog","article_publisher":"https:\/\/www.facebook.com\/antoniomusarrablog","article_author":"https:\/\/www.facebook.com\/antoniomusarrablog","article_published_time":"2019-10-06T17:16:26+00:00","article_modified_time":"2019-10-06T17:21:02+00:00","og_image":[{"width":722,"height":342,"url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png","type":"image\/png"}],"author":"Antonio Musarra","twitter_card":"summary_large_image","twitter_creator":"@antonio_musarra","twitter_site":"@antonio_musarra","twitter_misc":{"Written by":"Antonio Musarra","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#article","isPartOf":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/"},"author":{"name":"Antonio Musarra","@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"headline":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support","datePublished":"2019-10-06T17:16:26+00:00","dateModified":"2019-10-06T17:21:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/"},"wordCount":1232,"commentCount":0,"publisher":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"image":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png","keywords":["Docker","Liferay","Microsoft SQL Server"],"articleSection":["Blog","Data Base","Liferay","RDBMS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/","url":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/","name":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support","isPartOf":{"@id":"https:\/\/www.dontesta.it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage"},"image":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png","datePublished":"2019-10-06T17:16:26+00:00","dateModified":"2019-10-06T17:21:02+00:00","description":"In this article I will show you how to build a Docker Liferay 7.2 CE image with support for SQL Server 2017 using Blade CLI and Liferay Workspace.","breadcrumb":{"@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#primaryimage","url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png","contentUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2019\/10\/HowToBuildDockerLiferay72ImageSQLServer2017DatabaseSupport_FeayureImage.png","width":722,"height":342,"caption":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dontesta.it\/en\/2019\/10\/06\/how-to-build-a-docker-liferay-7-2-image-with-the-sql-server-2017-database-support\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dontesta.it\/"},{"@type":"ListItem","position":2,"name":"How to build a Docker Liferay 7.2 image with the SQL Server 2017 Database support"}]},{"@type":"WebSite","@id":"https:\/\/www.dontesta.it\/#website","url":"https:\/\/www.dontesta.it\/","name":"Antonio Musarra&#039;s Blog","description":"The ideal solution for a problem","publisher":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dontesta.it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24","name":"Antonio Musarra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/","url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png","contentUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png","width":512,"height":512,"caption":"Antonio Musarra"},"logo":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/"},"description":"I began my journey into the world of computing from an Olivetti M24 PC (http:\/\/it.wikipedia.org\/wiki\/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until \u2026 Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.","sameAs":["https:\/\/www.dontesta.it","https:\/\/www.facebook.com\/antoniomusarrablog","https:\/\/www.linkedin.com\/in\/amusarra\/","https:\/\/x.com\/antonio_musarra","https:\/\/www.youtube.com\/channel\/UC5D3_EtVPbZYUhrUcEK_THA\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts\/4511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/comments?post=4511"}],"version-history":[{"count":0,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts\/4511\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/media\/4524"}],"wp:attachment":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/media?parent=4511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/categories?post=4511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/tags?post=4511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}