Introduction to Docker
Taqtile uses Docker containers to allow clients flexibility to install on premises or in their own hosting environments. This document explains how to install and configure Manifest Server using Docker.
What is Docker?
Docker is a containerization platform that packages application and all its dependencies together in the form of a docker container to ensure that application works seamlessly in any environment.
What is a Container?
A Docker Container is a standardized unit which can be created on the fly to deploy a particular application or environment.
Using docker you can install a local server copy of Manifest. It is a very useful tool especially when you don’t have access to the Internet but need to demonstrate Manifest
Prerequisites
Docker set up and installation does require some expertise about docker and how it works. Below are a few articles that can help get you up to speed:
In order to set up Manifest using docker you will need the following information that is sent to the Manifest Account Owner through a Welcome email. This email will include important information to get you started with setting up an On-Prem Instance of Manifest using Docker. The important information will include:
- A link to our Docker Release Notes section
- The password to Docker
- Number of users as part of the agreed contract
- A unique license key to be populated into the compose file that manages the number of users
NOTE: Manifest for OnPrem supports only x86 compatible host systems. It will not run on ARM architecture systems.
Video Tutorial + Supporting documentation
Video Tutorials
Please review the below video links to help you with the specific docker action you are trying to accomplish. Available videos include:
- How to deploy Manifest On Premise Installation for Windows
- How to Clear and Reinstall your Manifest On-Premise Installation for Windows (COMING SOON)
- How to Move a Manifest On-Premise Installation of Manifest (COMING SOON)
- How to Update an Existing Manifest On-Premise Installation of Manifest (COMING SOON)
Supporting Documentation
Manifest docker supports x86 based host systems for Windows, Linux or Mac
- Windows: https://docs.docker.com/desktop/windows/
- Mac: https://docs.docker.com/desktop/mac/install/
- Linux: https://docs.docker.com/desktop/linux/
How to Set Up Docker
- Download Docker (without registration) or from web (with registration on your computer).
- Install Docker on your computer.
- Click on “Docker for Windows” shortcut and then check that it works in the tray bar:
Figure 1 – example of the shortcut in the tray bar that docker is running
- Create a folder “manifest” in local disk C on your computer. Download the most recent docker-compose file found in the Release Notes section of the Community site. Rename the file to docker-compose.yml. Once the file is renamed place this file into your “manifest” folder.
IMPORTANT: Once downloaded be sure to append the file extension to .yml versus .txt
5. Create a sub-folder in the newly “manifest” folder that will be referenced in your compose file and will house all the content uploaded into the on-premise Manifest instance.
The below example shows a folder within the ‘manifest’ folder called ‘uploads’
Figure 2: example of the ‘uploads’ folder created in the ‘manifest’ folder
- Set up environment variables in docker-compose.yml file
How to Populate Variables in Docker-compose.yml File
It is VERY IMPORTANT when populating the docker-compose.yml file with the API and WEB variables that information is entered in correctly and accurately. The smallest mistake in the docker-compose file will result in an error.
Please make sure that you reference the Docker Release Notes section in order to get the most recent changes and variable updates that come with each Manifest for Docker Release.
Below is a table outlining the variables that need to be populated within the docker-compose.yml file.
API VARIABLES:
Variable | Variable Type | Variable Description | Example |
---|---|---|---|
VOLUMES | </put/path/to/file/storage/here>:/uploads | This variable represents the path on your machine where Manifest will persistently store your application files even after restarting your compose. Based on this variable Manifest will store your application files persistently. | /c/manifest/uploads:/uploads |
IP_ACCESS | <PUT_VM_IP_ADDRESS> | Based on this variable manifest will create stun/turn configuration with our stun/turn container from compose. | 10.0.0.83 (This information can be obtained by typing ipconfig into your machines terminal) |
ADMIN_EMAIL | <PUT_ADMIN_EMAIL> | With this variable Manifest will generate admin account that will be used to log into the Manifest platforms (web, HL2, iPad, etc) | username@company.com (Use your company email address) |
ADMIN_PASSWORD | <PUT_ADMIN_PASSWORD> | With this variable Manifest will generate the login password for the Manifest Admin that will be used to log into the Manifest platforms (web, HL2, iPad, etc.) | P@ssword123 (Create an unique password that will be used to log into the Manifest platforms) |
LICENSE_KEY | ” “ | The license key obtained by your Account Manager that is used to control the number of licenses allowed within the docker install | Example: DdnkLiSNtn8mJMFNkKQlg0oJSUDkyWX1 (This will be obtained from your Account Manager) |
HOST | <PUT_VM_IP_ADDRESS> | Same as above IP_ACCESS | |
ROOT ADMIN EMAIL | <PUT_ADMIN_EMAIL> | Same as above ADMIN_EMAIL | |
ROOT ADMIN PASSWORD | <ROOT_ADMIN_PASSWORD> | Same as above ADMIN_PASSWORD |
Figure 3: Example of the populated API Variables in the docker-compose.yml file
WEB VARIABLES:
Variable | Variable Type | Variable Description | Example |
---|---|---|---|
VOLUMES | </put/path/to/file/storage/here>:/usr/share/nginx/html/uploads | This variable represents the path on your machine where Manifest will persistently store your application files even after restarting your compose. Based on this variable Manifest will store your application files persistently. | /c/manifest/uploads:/usr/share/nginx/html/uploads |
SELF-ASSIGNED CERTIFICATES | <put_here_path_to_folder_where_certs_will_store>:/usr/share/nginx/certs | If clients want to use their own certs they can replace certs in this folder and restart the web container and new certs will automatically be applied. IMPT! Certs must be named “nginx-cert.crt” and “nginx-cert.key” in order to work. Without these file names, Manifest will create self assigned certs and will use those instead. | c/manifest/uploads:/usr/share/nginx/certs |
IP_ACCESS | <PUT_VM_IP_ADDRESS> | Based on this variable manifest will create self-signed ssl certificate. | 10.0.0.83 (This information can be obtained by typing ipconfig into your machines terminal) |
Figure 4: Example of the populated Web variables in the docker-compose.yml file
CONVERTER VARIABLES:
Variable | Variable Type | Variable Description | Example |
---|---|---|---|
VOLUMES | </put/path/to/file/storage/here>:/manifest-cs/folder | Based on this variable, Manifest will store your 3D models persistently | /c/manifest/uploads:/manifest-cs/folder |
Figure 5: Example of the populated converter variables in the docker-compose.yml file
Deploying a New Docker Instance
Once the docker-compose.yml file is populated with all variables and checked for accuracy, please follow the below instructions to deploy a NEW docker instance.
- Save the file with name docker-compose.yml and type “All Files.” Change Encoding to UTF-8
Figure 6: Example of saving the file and changing encoding to UTF-8
- Once the docker-compose.yml is saved you should see a file with YML format:
Figure 7: Example of the file saved as .yml
- Run cmd as Administrator
- Right click mouse button on the start menu and choose “Task Manager”
Figure 8: Example of opening Task Manager
- Click on File–> Run new task, write “CMD” and check the box to run as Administrator and press [OK]:
Figure 9: Example of running a task in task Manager as Administrator
- Copy the below command in CMD
docker login taqtile.azurecr.io -u 131d655d-5dc7-436f-b569-d793c840a088
and then you will be prompted for the password. Please obtain the password from your Account Manager.
- Change current directory to c:/manifest by typing the below command:
cd c:/manifest
Figure 10: Example of changing the directory
- Copy the following command in CMD and the process will start. It may take some time, so please be patient. As a result you will see “…done”
docker-compose up -d
Figure 11: Example of the output after running command docker-compose up -d
- Check your docker results with the command outlined below in CMD. This will show the all the docker containers.
docker image ls
Figure 12: Example of the output of the docker image ls command
- Open your Chrome Browser and type localhost OR your local IP address in your browser. You will be directed to the Manifest login page. Enter in the following credentials to log into the Manifest Client Application.
- Email: <Email from docker-compose file> [API Variable: ADMIN_EMAIL]
- Password: <Password from docker-compose file> [API Variable: [ADMIN_PASSWORD]
Figure 13: Example of the Manifest Web Application login page
- To access docker on the HL2 device, in the Command Prompt, type ipconfig to obtain your IPv4 address. This is also the variable entered into your compose file: IP_ACCESS as your Web and API Variable.
On the devices Login page, enter in the IPv4 address into the domain field and then enter in your Email [ADMIN_EMAIL] and Password [ADMIN_PASSWORD] credentials.
It’s important to note that you may have to disable your firewall to get docker up and running on your HL2 device.
Figure 14: Example of the ipconfig command to find IPv4 Address
- Congratulations! You’ve created a new client and can start working with it.
Updating an Existing Manifest On-Prem Instance
The instructions below show how to update the docker container when an existing docker is already installed. Updating your docker instance will not clear the existing content already added to the docker. It will simply update it to the latest version.
- Make sure your docker is installed and working
- Update your c:/manifest folder with the updated docker-compose.yml file. Make sure all the variables have been updated in the docker-compose.yml file
- Reference the Docker Release notes section of the Community site to obtain the new images and changes to the docker-compose.yml file
- Ensure that you update your docker-compose.yml file with all the changes outlined in the Release notes. In some cases it will not only be the images that are new but also some additional changes to the compose file.
- Run CMD as Administrator
- Click on File –> Run new task, write “CMD” and check the box to run as Administrator and press [OK]
We have updated the login credentials for the docker registry. Please make sure to follow the instructions in the All About Docker article to make sure you are using the newest login and password.
- Open up a command prompt
- In the Command line, enter: docker login taqtile.azurecr.io -u 131d655d-5dc7-436f-b569-d793c840a088
- You will be prompted for a “Read Only” Password that you will need to obtain from your Account Manager
- Change the current directory to c:/manifest by typing in the below command:
cd c:/manifest
- Run the following commands in the order outlined below:
docker-compose down
docker-compose pull
docker-compose up -d
- Check your docker results with the command
docker image ls
in CMD. This will show all the docker containers. - Open your Chrome Browser and type localhost OR your local IP address in your browser. You will be directed to the Manifest login page. Enter in the following credentials to log into the Manifest Client Application.
- Email: <Email from docker-compose file> [API Variable: ADMIN_EMAIL]
- Password: <Password from docker-compose file> [API Variable: [ADMIN_PASSWORD]
- To access docker on the HL2 device, in the Command Prompt, type
ipconfig
to obtain your IPv4 address. This is also the variable entered into your compose file: [IP_ACCESS] as your Web and API Variable.
On devices Login page enter in the IPv4 address into the domain field and enter in your Email [ADMIN_EMAIL] and Password [ADMIN_PASSWORD] credentials.
It’s important to note that you may have to disable your firewall to get docker up and running on the HL2 device. - Congratulations! You’ve updated your docker to the latest version. When logging in you should still see all the content that was previously created from past versions.
Clearing and Reinstalling your Manifest On-Prem Instance
The instructions below outline how to CLEAR all images from past docker versions and install a new docker version and start from scratch. It’s important to note that this will clear all content currently populated into the Manifest application. If this is not your intention, please reference the updating instructions above.
- Make sure docker is installed and running
- Update your c:/manifest folder with the updated docker-compose.yml file. Make sure all the variables have been updated in the docker-compose.yml file
- Reference the Docker Release notes section of the Community site to obtain the new images and changes to the docker-compose.yml file
- Ensure that you update your docker-compose.yml file with all the changes outlined in the Release notes. In some cases it will not only be the images that are new but also some additional changes to the compose file.
- Run CMD as Administrator
- Click on File –> Run new task, write “CMD” and check the box to run as Administrator and press [OK]
- Change the current directory to c:/manifest by typing the following command:
cd c:/manifest
IMPT! If you have a new license key that was provided to you after the original install – you MUST go a pull command to pull in the new license key variables. Those commands are:
docker-compose down
docker-compose pull
docker-compose up -d
Once you have updated the images and changed an variables (example: license key) you are now ready to clear your docker and reinstall.
- From the command prompt in CMD, please enter in the following commands:
**** IMPT!!! Please note that the commands below are system wide commands. Running these commands will not just clear the Manifest docker files but will also clear any other docker applications that are running. Please proceed with caution. If you have other docker applications please manually delete only the manifest related images and volumes.
docker-compose down
docker image prune --all
docker system prune --volumes
- To check if the docker has been cleared, please type:
docker image ls.
If the docker was cleared the command results will be empty and all cleared. - To check if the docker volumes have been cleared, please type:
docker volume ls
- Once that is completed running, to reinstall docker with the latest images and updates but with the docker cleared from all content, please enter in the following command:
docker-compose up -d
- Check your docker results with the command
docker image ls
in CMD. This will show all the docker containers. - Open your Chrome Browser and type localhost OR your local IP address in your browser. You will be directed to the Manifest login page. Enter in the following credentials to log into the Manifest Client Application.
- Email: <Email from docker-compose file> [API Variable: ADMIN_EMAIL]
- Password: <Password from docker-compose file> [API Variable: [ADMIN_PASSWORD]
- To access docker on the HL2 device, in the Command Prompt, type
ipconfig
to obtain your IPv4 address. This is also the variable entered into your compose file: IP_ACCESS as your Web and API Variable.
On devices Login page enter in the IPv4 address into the domain field and enter in your Email [ADMIN_EMAIL] and Password [ADMIN_PASSWORD] credentials.
It’s important to note that you may have to disable your firewall to get docker up and running on the HL2 device. - Congratulations! You have cleared and reinstalled a new docker instance. You docker will be cleared of all previous data and you will now be able to start from scratch.
Moving an On-Prem Instance
There may be an instance when a Manifest client initially deploys a cloud based instance but then wants to also deploy a Manifest instance using docker. If you want all the content that was created on the hosted instance to be uploaded and added to the docker instance, please follow the instructions below. This would also apply to moving from one server to another server.
Prerequisites
- Most current docker-compose.yml file
- SQL database of the Manifest domain content to be uploaded to an on-premise instance.
- Please reach out to your Account Manager to obtain this file
- Once you have obtained the zip file from your Account Manager, rename the file and place it in the manifest folder on your Local Drive.
Figure 16: Example showing where to place the zip file
- Extract files from zip file (in zip file must be 2 files – uploads folder and sql file with database backup with name same with client name)
Figure 17: Example of the extracted files
Figure 18: Example of extracted files
Figure 19: Example of the extracted files
- Change the docker compose file to connect existing files to the on-premise build.
- You will need to change the following variables based on where the uploads folder is stored. Here are examples of where you need to change:
- API Variables:
- Volumes: <put/path/to/file/storage/here>:/uploads
- Example: /c/manifest/FilesForOnPrem/uploads:/uploads
- API Variables:
- You will need to change the following variables based on where the uploads folder is stored. Here are examples of where you need to change:
Figure 20: Example as to where to update the variable path in the API Container
- Web Variables:
- Volumes: </put/path/to/file/storage/here>:/usr/share/nginx/html/uploads
- Example: /c/manifest/FilesForOnPrem/uploads:/usr/share/nginx/html/uploads
Figure 21: Example of where to update the volume path in the Web container
- Docker container:
- Volumes: <put_here_path_to_folder_where_certs_will_store>:/usr/share/nginx/certs
- Example: /c/manifest/FilesForOnPrem/uploads:/usr/share/nginx/certs
Figure 22: Example of where to update the variable path in the docker container
- Converter Variables:
- Volumes: </put/path/to/file/storage/here>:/manifest-cs/folder
- Examples: /c/manifest/FilesForOnPrem/uploads:/manifest-cs/folder
Figure 23: Example of where to update the variable path in the converter container
- Please also make sure to update the dbpostgres block in the docker compose file:
dbpostgres:
image: taqtile.azurecr.io/manifest-db-11
volumes:
– manifest_postgres:/var/lib/pgsql/data **postgres on mac to be replaced by pgsql
ports:
– “5432”
environment:
– POSTGRES_USER=manifest
– POSTGRES_PASSWORD=dnhrfw2ufbbto3!mritbfwl
– POSTGRES_DB=manifestmain
Figure 24: Example of the updated postgres block
4. Launch compose by entering the below command:
docker-compose up -d
Figure 25: Example of launching compose
5. Check container status by entering the below command:
docker container ls
Figure 26: Example of the container status
6. Copy database backup by command:
docker cp {database_file_name}.sql {id_database_container}:/{database_file_name}.sql
- Id_database_container: This is the id db container from the results of command docker container ls.
- Example: id_database_container = b238ef9a8df4
- Database_file_name: This is the name of the sql file from archive
- Example: FilesForOnPrem.sql
- Final Command: docker cp FilesForOnPrem.sql
- Example: b238ef9a8df4:/FilesForOnPrem.sql
Figure 27: Example of the database container ID
Note: It’s important that you make sure that you copy <Database_file_name>.sql from <storage> folder to manifest folder
Figure 28: Example of the Database file name
7. Enter inside of database container by entering in the following command:
docker exec -it {id_database_container} /bin/bash
(Example: docker exec -it b238ef9a8df4 /bin/bash)
Figure 29: Example of entering the database container
8. Prepare database backup by entering the below command.
sed -i 's/devtaqtile/manifest/g' {database_file_name}.sql
Example: sed -i ‘s/devtaqtile/manifest/g’ FilesForOnPrem.sql)
Figure 30: Example of preparing database backup
9. Enter inside of database by command:
psql -U manifest -d postgres
Figure 31: Example of database command
10. Use command “ DROP DATABASE default_client_db
“ and ” CREATE DATABASE default_client_db
” to prepare database for restore existing database from backup. After that leave database by command “ exit
“
Figure 32: Example of the commands to restore existing database from backup
11. Use the below command to restore existing database from backup.
psql -U manifest -d default_client_db < {database_file_name}.sql
(Example: psql -U manifest -d default_client_db < FilesForOnPrem.sql )
After that leave database container by command “exit
“
Figure 33: Example of restoring backup
Figure 34: Example of restoring backup
12. Done. You can check data in the web client
Figure 35: Example of the Manifest login page on the Web Application
IMPT! It’s important to note that at this time you are not able to upload a .SQL file to an on-prem instance that is currently populated with data. Any and all content that is currently on the on-prem instance will be cleared and replaced with the .SQL file.
Troubleshooting Tips
Having trouble / issues launching the On-Premise instance of Manifest? Below are instructions to pull logs to send to manifestsupport@taqtile.com to help.
- Double check that all your variables are populated with the correct information in your docker compose file
- Pull logs by entering docker-compose up in your terminal. Select Crtl A, open a text doc and then select Crtl C and paste the logs into this text doc
- Send the following information to manifestsupport@taqtile.com and attach:
- Docker-compose.yml file
- Logs that were captured as outlined above
- Any relevant screenshots and information of the issue you are encountering
Tips from the Expert
I can’t find my IPv4 address to log into the device. What do I do?
In the command prompt, type ipconfig and/or u URL https://www.makeuseof.com/tag/find-ip-address-windows-10/
What if I have a new license key for the on-premises deployment. What do I need to do?
If you receive an updated license key you need to make sure you “pull” in the new license key. Please follow these commands:docker-compose down
docker-compose pull
docker-compose up -d
What is the best way for IT to whitelist Manifest Connect?
Allow both your the IP of your domain and the expertconnect1@taqtile.com URL to be whitelisted by ones IT department. The firewall parameters are:
- outbound 80 and 443 to expertconnect.1.taqtile.com
- inbound 49152 – 65535 UDP from expertconnect.1.taqtile.com
How do I move upload files from docker volumes to host storage?
With docker compose launched, the easiest way to upload files from docker volumes to host storage is by the following command:docker cp [API_CONTAINER ID]:/uploads [PATH/TO/NEW/STORAGE]
docker-compose restart
What if I want to use my own SSL, how can I change that?
You can replace your certificate using this command in this terminal: sudo docker cp nginx-cert.key (web_container_id):/etc/ssl/private/nginx-cert.key
sudo docker cp nginx-cert.crt (web_container_id):/etc/ssl/certs/nginx-cert.crt
sudo docker container restart (web_container_id)
IMPT!: The name on the SSL certificates MUST BE nginx-cert.key and nginx-cert.crt
When I log into the 3D Device after the docker container is installed I have received a message that says “Check your Credentials.” What does that mean?
If you are having trouble logging into the 3D device and receiving the “Check your Credentials” message try to:
- Confirm you are entering in the correct IPv4 address
- Confirm that you are entering the correct Email and Password that you set in your docker-compose.yml file.
- Check your firewall on your machine
When I enter in my IP address into the Manifest login domain, I receive the following message: ERR_CONNECTION_TIMED_OUT, what should I do?
You might need to make sure that Port 80 is opened up on your PC for the docker to run properly. To confirm your Port 80 is open, please follow these steps:
For Windows:
1. Navigate to Control Panel, System and Security and Windows Firewall.
2. Select Advanced settings and highlight Inbound Rules in the left pane
3. Right click Inbound Rules and select New Rule
4. Add the port you need to open and click Next
5. Add the protocol (TCP or UDP) and the port number into the next window and click Next
6. Select Allow the connection in the next window and hit Next
7. Select the network type as you see fit and click Next
8. Name the rule something meaningful and click Finish
Then select TCP
Make sure all these Rules are checked: Domain, Private + Public
For Mac:
1. Open System Preferences –> Security + Privacy –> Privacy –> Firewall –> Firewall Options
2. Check Add
3. Choose an application from the Applications folder and click Add
4. Ensure that the option next to the application is set to Allow incoming connections
5. Click OK