# DeepDetect Platform Docker ## Installation ``` # Setup platform project name, directory and architecture export PROJECT_NAME=dd_platform export DD_PLATFORM=$HOME/deepdetect export ARCH=cpu # gpu also available # Install platform repository git clone https://github.com/jolibrain/dd_platform_docker.git \ ${DD_PLATFORM} # Go to directory cd ${DD_PLATFORM}/code/${ARCH}/ # Start platform docker containers CURRENT_UID=$(id -u):$(id -g) MUID=$(id -u) \ docker-compose -p $PROJECT_NAME up -d # Go to http://localhost:1912 ``` ## Connecting to an existing DeepDetect server If you need to connect a new DeepDetect server to the platform, you must modify the `nginx` configuration to access to this server, and the `platform-ui` configuration to update the UI. ### config/nginx/nginx.conf Set a new `upstream` in the `http` section: ``` upstream UPSTREAM_NAME { least_conn; server DD_HOST:DD_PORT max_fails=3 fail_timeout=30s; } ``` Set a new `location` in the `server` section: ``` location ~ /api/SERVER_NAME/(?<url>.*) { proxy_pass http://UPSTREAM_NAME/$url$is_args$args; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } ``` ### config/platform_ui/config.json In `deepdetect.servers` array, add the following item: ``` { "name": "SERVER_NAME", "settings": { "path": "/api/SERVER_NAME", "isWritable": true } } ``` The flag `isWritable` will allow you to create and delete services on this server from the `platform_ui` web interface. ## Monitoring another GPU In order to monitor a GPU, you'll need to modify the `platform_ui` config file to update the interface, and the `nginx` config to let the interface access it. ### config/nginx/nginx.conf Set a new `upstream` in the `http` section: ``` upstream gpu_stat_GPU_NAME { least_conn; server GPU_STATS_HOST:GPU_STATS_PORT max_fails=3 fail_timeout=30s; } ``` Usually, `GPU_STATS_PORT` is `12345` Set a new `location` in the `server` section: ``` location ~ /gpu/ENDPOINT { proxy_pass http://gpu_stat_GPU_NAME/$url$is_args$args; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } ``` ### config/platform_ui/config.json In `gpuInfo.servers` array, add the following item: ``` { "name": "GPU_NAME", "url": "/gpu/ENDPOINT" } ``` ## Configuration of docker image type and versions Docker-compose uses the `latest` tag for all docker images that correspond to the latest stable version. You can select the wanted version with these following environment variables: ``` DD_SERVER_IMAGE=gpu_torch DD_SERVER_TAG=v0.14.0 DD_PLATFORM_UI_TAG=latest DD_JUPYTER_TAG=latest DD_FILEBROWSER_TAG=latest ``` ## Allow direct connection to deepdetect API You can add to deepdetect container of `code/gpu/docker-compose.yml`: ``` ports: - "127.0.0.0:12345:8080" ```