
Compose PI System container architecture
Posted by Eugene Lee
Note: Development and Testing purposes only. Not supported in production environments.
Link to other containerization articles
Introduction
In this blog post, I will be giving an overview of how to use Docker Compose to create a PI System compose architecture that you can use for
1. Learning PI System development
2. Running your unit tests with a clean PI System
3. Compiling your AF Client code
4. Exploring PI Web API structure
5. Testing out Asset Analytics syntax
5. Other use cases that I haven't thought of (Post in the comments!)
What is Compose?
It is a tool for defining and running multi-container Docker applications. With Compose, you use a single file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. It is both easy and convenient.
Setup images
The Setup involved is simple. You can refer to my previous blog posts set up these images. Docker setup instructions can be found in the Containerization Hub link above.
Spin up PI Web API container (AF Server included)
Spin up PI Data Archive container
Spin up PI Analysis Service container
Compose setup
In Powershell, run as administrator these commands:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.21.2/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe
Obtain Compose file from docker-compose.yml. Place it on your desktop.
Deployment
Open a command prompt and navigate to your desktop. Enter
docker-compose up
Wait until the screen shows
Once you see that. You can close the window. Your PI System architecture is now up and running!
Usage
There are various things you can try out. If you are experiencing networking issues between the containers, turn off the firewall for the Public Profile on your container host.
1. You can try browsing the PI Web API structure by using this URL (https://eleeaf/piwebapi) in your web browser. When prompted for credentials, you can use
username: afadmin
password: qwert123!
2. Test network connectivity from client container to the PI Data Archive and AF Server by running
docker exec -it desktop_client_1 afs
The hostname of the AF Server is eleeaf. When prompted to use NTLM, enter q. The hostname of the PI Data Archive is eleepi. You should see the following results.
3. You can install PI System Management Tools on your container host and connect to the PI Data Archive via IP address of the container. Somehow, PI SMT doesn't let you connect with hostname.
4. You can also install PI System Explorer and connect to the AF Server to create new databases.
5. You can try compiling some open source AF SDK code found in our Github repository using the AF Client container. (so that you do not have to install Visual Studio)
6. You can use PI System Explorer to experiment with some Asset Analytics equations that you have in mind to check if they are valid.
Destroy
Once you are done with the environment, you can destroy it with
docker-compose down
Limitations
This example does not persist data or configuration between runs of the container.
These applications do not yet support upgrade of container without re-initialization of the data.
This example relies on PI Data Archive trusts and local accounts for authentication.
AF Server, PI Web API, and SQL Express are all combined in a single container.
Conclusion
Notice how easy it is to set up a PI System compose architecture. You can do this in less than 10 minutes. No more having to wait hours to install a PI System for testing and developing with.
The current environment contains PI Data Archive, AF Server, AF Client, PI Web API, a AF SDK sample application (called afs) and PI Analysis Service. More services will be added in the future!
Comments