diff --git a/docker-compose.local.build.yml b/cli-linux/docker-compose.local.build.yml
similarity index 100%
rename from docker-compose.local.build.yml
rename to cli-linux/docker-compose.local.build.yml
diff --git a/docker-compose.dcproj b/docker-compose.dcproj
index 91d4a272e..59afd14a8 100644
--- a/docker-compose.dcproj
+++ b/docker-compose.dcproj
@@ -11,6 +11,7 @@
     
       docker-compose.yml
     
+    
     
       docker-compose.yml
     
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
new file mode 100644
index 000000000..89917a056
--- /dev/null
+++ b/docker-compose.prod.yml
@@ -0,0 +1,76 @@
+version: '2'
+
+# The Production docker-compose file has to have the external/real IPs or DNS names for the services 
+# This configuration has to be used when testing the Web apps and the Xamarin apps from remote machines/devices using the same WiFi, for instance.
+# ASPNETCORE_ENVIRONMENT=Development just to get errors while testing. Could be set to "Production"
+#
+# You need to start it with the following CLI command: 
+# docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
+
+services:
+
+  basket.api:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5103
+      - ConnectionString=basket.data
+      - identityUrl=http://identity.api:5105              #Local: You need to open your host's firewall at range 5100-5105.  at range 5100-5105. 
+    ports:
+      - "5103:5103"
+
+  catalog.api:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5101
+      - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word
+      - ExternalCatalogBaseUrl=http://192.168.88.248:5101    #Local: You need to open your host's firewall at range 5100-5105.  at range 5100-5105.
+    ports:
+      - "5101:5101"
+
+  identity.api:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5105
+      - SpaClient=http://192.168.88.248:5104
+      - ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word 
+      - MvcClient=http://192.168.88.248:5100              #Local: You need to open your host's firewall at range 5100-5105.  
+    ports:
+      - "5105:5105"
+
+  ordering.api:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5102
+      - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
+      - identityUrl=http://identity.api:5105              #Local: You need to open your host's firewall at range 5100-5105.  at range 5100-5105. 
+    ports:
+      - "5102:5102"
+
+  webspa:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5104
+      - CatalogUrl=http://192.168.88.248:5101
+      - OrderingUrl=http://192.168.88.248:5102
+      - IdentityUrl=http://192.168.88.248:5105              #Local: You need to open your host's firewall at range 5100-5105.  at range 5100-5105. 
+      - BasketUrl=http://192.168.88.248:5103                
+    ports:
+      - "5104:5104"
+
+  webmvc:
+    environment:
+      - ASPNETCORE_ENVIRONMENT=Development
+      - ASPNETCORE_URLS=http://0.0.0.0:5100
+      - CatalogUrl=http://catalog.api:5101
+      - OrderingUrl=http://ordering.api:5102
+      - IdentityUrl=http://192.168.88.248:5105              #Local: You need to open your host's firewall at range 5100-5105.  at range 5100-5105. 
+      - BasketUrl=http://basket.api:5103
+    ports:
+      - "5100:5100"
+
+  sql.data:
+    environment:
+      - SA_PASSWORD=Pass@word
+      - ACCEPT_EULA=Y
+    ports:
+      - "5433:1433"
\ No newline at end of file
diff --git a/src/Console/eShopConsole/Program.cs b/src/Console/eShopConsole/Program.cs
deleted file mode 100644
index f647bc2d5..000000000
--- a/src/Console/eShopConsole/Program.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using System;
-using System.Linq;
-using Microsoft.eShopOnContainers.Services.Ordering.SqlData.UnitOfWork;
-using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel;
-using Microsoft.eShopOnContainers.Services.Ordering.Domain.Contracts;
-using Microsoft.eShopOnContainers.Services.Ordering.SqlData.Repositories;
-using Microsoft.EntityFrameworkCore;
-
-namespace eShopConsole
-{
-    public class Program
-    {
-        public static void Main(string[] args)
-        {
-            //// All contexts that share the same service provider will share the same database
-
-            ////Using InMemory DB
-            ////var options = DbContextUtil.CreateNewContextOptionsForInMemoryDB();
-
-            ////Using Sql Server
-            //var options = DbContextUtil.CreateNewContextOptionsForSqlDb();
-
-            //// Run the test against one instance of the context
-            //using (var context = new OrderingDbContext(options))
-            //{
-            //    IOrderRepository orderRepository = new OrderRepository(context);
-
-            //    //Create generic Address ValueObject
-            //    Address sampleAddress = new Address("15703 NE 61st Ct.",
-            //                                        "Redmond",
-            //                                        "Washington",
-            //                                        "WA",
-            //                                        "United States",
-            //                                        "US",
-            //                                        "98052",
-            //                                        47.661492,
-            //                                        -122.131309
-            //                                        );
-            //    //Create sample Orders
-            //    Order order1 = new Order(Guid.NewGuid(), sampleAddress, sampleAddress);
-
-            //    //Add a few OrderItems
-            //    order1.AddNewOrderItem(Guid.NewGuid(), 2, 25, 30);
-            //    order1.AddNewOrderItem(Guid.NewGuid(), 1, 58, 0);
-            //    order1.AddNewOrderItem(Guid.NewGuid(), 1, 60, 0);
-            //    order1.AddNewOrderItem(Guid.NewGuid(), 3, 12, 0);
-            //    order1.AddNewOrderItem(Guid.NewGuid(), 5, 3, 0);
-
-            //    orderRepository.Add(order1);
-            //    orderRepository.UnitOfWork.CommitAsync();
-
-            //    //With no Async Repository
-            //    //context.Orders.Add(order1);
-            //    //context.SaveChanges();
-
-            //}
-
-            ////// Use a separate instance of the context to verify correct data was saved to database
-            //using (var context = new OrderingDbContext(options))
-            //{
-            //    var orders = context.Orders
-            //                            .Include(o => o.ShippingAddress)
-            //                            .Include(o => o.BillingAddress)
-            //                            .ToList();
-
-            //    string cityName = orders.First().ShippingAddress.City;
-            //    Console.WriteLine("City name retreived from SQL Server: "+cityName);
-            //}
-        }
-    }
-}
diff --git a/src/Console/eShopConsole/Properties/AssemblyInfo.cs b/src/Console/eShopConsole/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4c33ef24d..000000000
--- a/src/Console/eShopConsole/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("eShopConsole")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("c10c7b69-ce4f-4167-928e-33b7fa1dffc7")]
diff --git a/src/Console/eShopConsole/Properties/launchSettings.json b/src/Console/eShopConsole/Properties/launchSettings.json
deleted file mode 100644
index bddd8d3e8..000000000
--- a/src/Console/eShopConsole/Properties/launchSettings.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "profiles": {
-  }
-}
\ No newline at end of file
diff --git a/src/Console/eShopConsole/eShopConsole.xproj b/src/Console/eShopConsole/eShopConsole.xproj
deleted file mode 100644
index 16b79ebb7..000000000
--- a/src/Console/eShopConsole/eShopConsole.xproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-  
-    14.0
-    $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
-  
-  
-    c10c7b69-ce4f-4167-928e-33b7fa1dffc7
-    eShopConsole
-    .\obj
-    .\bin\
-    v4.6
-  
-  
-    2.0
-  
-  
-
\ No newline at end of file
diff --git a/src/Console/eShopConsole/project.json b/src/Console/eShopConsole/project.json
deleted file mode 100644
index f953c60fe..000000000
--- a/src/Console/eShopConsole/project.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "version": "1.0.0-*",
-  "buildOptions": {
-    "emitEntryPoint": true,
-    "debugType": "portable"
-  },
-  "dependencies": {
-    "Microsoft.EntityFrameworkCore": "1.0.0",
-    "Microsoft.NETCore.App": {
-      "type": "platform",
-      "version": "1.0.0"
-    },
-    "Ordering.Domain": "1.0.0-*",
-  },
-  "frameworks": {
-    "netcoreapp1.0": {
-      "imports": "dnxcore50"
-    }
-  },
-  "publishOptions": {
-    "include": [
-      "docker-compose.yml",
-      "docker-compose.debug.yml",
-      "Dockerfile.debug",
-      "Dockerfile",
-      ".dockerignore"
-    ]
-  }
-}
\ No newline at end of file