Release Ignition as a Docker container.
complete
s
sbart
As Ignition supports multiple platforms, Windows/Linux, it would be great to release it as a Docker container. The server component can then be packaged as a single container and that can be used on Linux, OSx, Windows but most importantly in many cloud systems like AWS.
Log In
P
Paul Griffith
complete
Part of the 8.1 release process.
S
Siam Chowdhury
Paul Griffith: Great! Any chance that Ignition Edge will come to an official container?
P
Paul Griffith
Siam Chowdhury: Currently no plans for different editions as different container tags - since right now, you can use commissioning to select what edition to install. What will likely happen fairly soon is edition selection via environment variable/runtime flag, so it doesn't require user interaction.
D
Douglas Fresnel
Paul Griffith:
While this docker image is a step in the right direction, there are several things which need improvement.
- Ignition is running in the background while the tail command running in the entrypoint script is what's keeping the container alive. This means that there are extra processes running that aren't required (bash shell, tail). More importantly, there is no graceful way to shutdown Ignition with signals such as those used by docker stop. Instead the signal causes bash to stop and then Ignition is forcefully shut down.
- This image contains a portainer label that should be removed: io.portainer.accesscontrol.teams. That label may be used by Inductive Automation, but it shouldn't be part of public docker image.
- This image uses command arguments instead of environment variables for configuration. This goes against the convention used by almost every other Docker image.
- The container runs as root. It is a Docker best practice to run as a non-root user when possible.
- The image could be slimmed down to only include necessary items. Vim, nano, and ssh are installed in the container but aren't needed for Ignition to run.
- Several layers of the image could be combined if separate RUN statements in the Dockerfile were combined into a single RUN statement
- The healthcheck calls gwcmd.sh, but that can conflict with a user calling gwcmd.sh (e.g. in a docker exec session) since gwcmd.sh writes to files.
- There's no automatic way to go through the commissioning process on startup
- There's no good way to use docker volumes to retain data.
There's already another Ignition image which doesn't have the problems above, and has several other useful features: https://hub.docker.com/r/kcollins/ignition
You may wish to use that image for inspiration, or, better yet, combine forces with the author of that image.
K
Kevin Collins
Douglas Fresnel: Regarding that last statement, I believe that is something they're looking at now.. Or should I say, we? 😉. Stay Tuned!
--Kevin Collins
a
alexander.bernstein@flextronics.com
You can make one yourself as part of your development environment like I did. I've added mysql and the ignition, noVNC, and all configurations so everything works when you spin up the container. You should put mysql in it's own container via docker best practices but, in this case, it was more valuable to have the full development environment in the same container. This allows me to have many designers with different projects on the same computer... very powerful. Just build your image yourself using docker commit.