diff --git a/README.md b/README.md
index e892cc2..f46cd69 100644
--- a/README.md
+++ b/README.md
@@ -51,10 +51,10 @@ Use one of our pre-installed Amazon Machine Images for easy deployment in AWS.
For details and instructions, see [TRAINS-server: AWS pre-installed images](docs/install_aws.md).
-## Docker Installation - Linux, macOS
+## Docker Installation - Linux, macOS, and Windows
Use our pre-built Docker image for easy deployment in Linux and macOS.
-For Windows, we recommend installing our pre-built Docker image on a Linux virtual machine.
+For Windows, please see detailed docker-compose installation instructions on our [FAQ](https://github.com/allegroai/trains-server/blob/master/docs/faq.md#docker_compose_win10).
Latest docker images can be found [here](https://hub.docker.com/r/allegroai/trains).
1. Setup Docker (docker-compose installation details: [Ubuntu](docs/faq.md#ubuntu) / [macOS](docs/faq.md#mac-osx))
diff --git a/docker-compose-win10.yml b/docker-compose-win10.yml
new file mode 100644
index 0000000..beaf05b
--- /dev/null
+++ b/docker-compose-win10.yml
@@ -0,0 +1,117 @@
+version: "3.6"
+services:
+
+ apiserver:
+ command:
+ - apiserver
+ container_name: trains-apiserver
+ image: allegroai/trains:latest
+ restart: unless-stopped
+ volumes:
+ - c:/opt/trains/logs:/var/log/trains
+ - c:/opt/trains/config:/opt/trains/config
+ depends_on:
+ - redis
+ - mongo
+ - elasticsearch
+ - fileserver
+ environment:
+ ELASTIC_SERVICE_HOST: elasticsearch
+ MONGODB_SERVICE_HOST: mongo
+ REDIS_SERVICE_HOST: redis
+ ports:
+ - "8008:8008"
+ networks:
+ - backend
+
+ elasticsearch:
+ networks:
+ - backend
+ container_name: trains-elastic
+ environment:
+ ES_JAVA_OPTS: -Xms2g -Xmx2g
+ bootstrap.memory_lock: "true"
+ cluster.name: trains
+ cluster.routing.allocation.node_initial_primaries_recoveries: "500"
+ discovery.zen.minimum_master_nodes: "1"
+ http.compression_level: "7"
+ node.ingest: "true"
+ node.name: trains
+ reindex.remote.whitelist: '*.*'
+ script.inline: "true"
+ script.painless.regex.enabled: "true"
+ script.update: "true"
+ thread_pool.bulk.queue_size: "2000"
+ thread_pool.search.queue_size: "10000"
+ xpack.monitoring.enabled: "false"
+ xpack.security.enabled: "false"
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+ image: docker.elastic.co/elasticsearch/elasticsearch:5.6.16
+ restart: unless-stopped
+ volumes:
+ - c:/opt/trains/data/elastic:/usr/share/elasticsearch/data
+ ports:
+ - "9200:9200"
+
+ fileserver:
+ networks:
+ - backend
+ command:
+ - fileserver
+ container_name: trains-fileserver
+ image: allegroai/trains:latest
+ restart: unless-stopped
+ volumes:
+ - c:/opt/trains/logs:/var/log/trains
+ - c:/opt/trains/data/fileserver:/mnt/fileserver
+ ports:
+ - "8081:8081"
+
+ mongo:
+ networks:
+ - backend
+ container_name: trains-mongo
+ image: mongo:3.6.5
+ restart: unless-stopped
+ command: --setParameter internalQueryExecMaxBlockingSortBytes=196100200
+ volumes:
+ - mongodata:/data
+ ports:
+ - "27017:27017"
+
+ redis:
+ networks:
+ - backend
+ container_name: trains-redis
+ image: redis:5.0
+ restart: unless-stopped
+ volumes:
+ - c:/opt/trains/data/redis:/data
+ ports:
+ - "6379:6379"
+
+ webserver:
+ command:
+ - webserver
+ container_name: trains-webserver
+ image: allegroai/trains:latest
+ restart: unless-stopped
+ volumes:
+ - c:/trains/logs:/var/log/trains
+ depends_on:
+ - apiserver
+ ports:
+ - "8080:80"
+
+networks:
+ backend:
+ driver: bridge
+
+volumes:
+ mongodata:
\ No newline at end of file
diff --git a/docs/faq.md b/docs/faq.md
index 922c08d..ee23e39 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -6,12 +6,15 @@
* [Running trains-server on Mac OS X](#mac-osx)
+* [Running trains-server on Windows 10](#docker_compose_win10)
+
* [Installing trains-server on stand alone Linux Ubuntu systems ](#ubuntu)
* [Resolving port conflicts preventing fixed users mode authentication and login](#port-conflict)
* [Configuring trains-server for sub-domains and load balancers](#sub-domains)
+
### Deploying trains-server on Kubernetes clusters
**trains-server** supports Kubernetes. See [trains-server-k8s](https://github.com/allegroai/trains-server-k8s)
@@ -59,6 +62,43 @@ To install and configure **trains-server** on Mac OS X, follow the steps below.
Your server is now running on [http://localhost:8080](http://localhost:8080)
+### Running trains-server on Windows 10
+
+You can run **trains-server** on Windows 10 using Docker Desktop for Windows (see the Docker [System Requirements](https://docs.docker.com/docker-for-windows/install/#system-requirements)).
+
+To run **trains-server** on Windows 10, follow the steps below.
+
+1. Install the Docker Desktop for Windows application by either:
+
+ * following the [Install Docker Desktop on Windows](https://docs.docker.com/docker-for-windows/install/) instructions.
+ * running the Docker installation [wizard](https://hub.docker.com/?overlay=onboarding).
+
+1. Increase the memory allocation in Docker Desktop to `4GB`.
+
+ 1. In your Windows notification area (system tray), right click the Docker icon.
+
+ 1. Click *Settings*, *Advanced*, and then set the memory to at least `4096`.
+
+ 1. Click *Apply*.
+
+1. Create local directories for data and logs. Open PowerShell and execute the following commands:
+
+ mkdir c:\opt\trains\logs
+ mkdir c:\opt\trains\config
+ mkdir c:\opt\trains\data
+ mkdir c:\opt\trains\data\elastic
+ mkdir c:\opt\trains\data\redis
+ mkdir c:\opt\trains\data\fileserver
+
+1. Save the **trains-server** docker-compose YAML file [docker-compose-win10.yml](https://raw.githubusercontent.com/allegroai/trains-server/master/docker-compose-win10.yml) as `c:\opt\trains\docker-compose.yml`.
+
+1. Run `docker-compose`. In PowerShell, execute the following commands:
+
+ cd c:\opt\trains\
+ docker-compose up
+
+ Your server is now running on [http://localhost:8080](http://localhost:8080)
+
### Installing trains-server on stand alone Linux Ubuntu systems
To install **trains-server** on a stand alone Linux Ubuntu, follow the steps belows.