My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 7
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 1 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 2 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 3 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 4 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 5 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 6 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 7 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 8 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 9 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 10 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 11 | Click Here |
My Take on an Azure Open Source Cross-Platform DevOps Toolkit–Part 12 | Click Here |
Stopping the previously running container (myapp)
As we enter step 5 we will now begin to think about testing the running container.
But before we can do that we have to make sure that firstly stop all running containers. Once we're sure that all containers are stopped, we can run the container we just built. So this post is about stopping the container.
So between steps 3 and 4 we will stop the old running container and run the new one.
Figure 1: The big picture
Jenkins Pipeline Definition
The next 2 sections of our pipeline that need to be built.
Figure 2: The current work for our pipeline
Explanation for StopRunningContainersLocally.py
Line(s) | Explanation |
23-64 | Two objects. DockerResultList maintains a list of DockerResult objects. Each DockerResult object is a running container. |
9-21 | Top level function that issues "docker ps" to get list of running containers. Each running container is stored as DockerResult object. |
55-64 | Looks for an instance of a container. In our case we are looking for myapp (Container Name) to see if it is running. findContainer() returns a DockerResult object if found, else returns None. Docker result contains all the attributes of our running container, such as container id. |
66-69 | Check pipeline for previous failures. If found, abort this Python script (StopRunningContainersLocally.py). |
73 | Calls the high level function to kick off the whole process of discovering locally running containers. |
81-86 | If "myapp" is running as container, issue "docker stop" command to terminate it. |
88-91 | As always, record the state of this running container. |
Source code for StopRunningContainersLocally.py
Figure 3: Source code for StopRunningContainersLocally.py
Validating correct operation of StopRunningContainersLocally.py
The docker ps command reveals that myapp is running. Then, python3 StopRunningContainersLocally.py successfully stop myapp from running. Finally, we run ShowPipelineState.py to validate that the state is correctly being recorded.
Figure 4: Testing StopRunningContainersLocally.py
Let's run a docker ps to make sure that the container is not running (myapp).
Figure 5: Proof that the container is not running
Conclusion
We finished the work for stopping our running container. This important because our pipeline needs to do these steps:
- Build a new container
- Stop the old container that is running
- Run the new container
In the next post we will illustrate how to start the container that is freshly built.