Application migration encountered some special requirements, such as the need to generate some new config file by interaction, and then launch the application needs to rely on these files, so when the image is built there is basically no way to fix these files, because he needs to be based on the environment to do dynamic registration generation, The current solution is as follows:
1. Write a python script that supports interactivity, build the configuration
#! /usr/bin/pythonimport subprocessimport timeimport fcntlimport osp = subprocess. Popen ([ " java ", " -jar ", " a.jar "],stdin=subprocess. Pipe,stdout=subprocess. PIPE) Flags = Fcntl.fcntl (p.stdout,fcntl. F_GETFL) Fcntl.fcntl (p.stdout,fcntl. F_setzfl,flags | OS. O_nonblock) time.sleep ( 2 " 1\r\n )
Start Debugging screen has been in the blocking state, and later under the guidance of colleagues to join Nonblock after the adoption.
2. Put the Python script in the Tomcat run catalina.sh, and let him start the script as soon as it starts the container.
Python-based interactive access