This topic outlines the steps that a Dockerfile must carry out to create a base image for 
               		COBOL Server.
               	 
            
            	 
            By far the easiest, and the recommended, way to create a base image for 
               		COBOL Server is to use the container demonstration as described in 
               		The Container Demonstration for the 
                     		COBOL Server Base Image. If you do use the container demonstration, you do not need to perform any of the steps described in this topic because the
               container demonstration does them all for you. The information in this topic is provided if you choose to write your own Dockerfile
               to create a 
               		COBOL Server base image. 
               	 
            
 
            	 
            Note: A separate document, 
                  		  Best Practices for Moving Your COBOL Applications to Containers, is available that describes best practices that 
                  		  Micro Focus recommends you adopt when moving an existing COBOL application to run in a containerized environment. See 
                  		  Micro Focus: Best Practices for Moving Your COBOL Applications to Containers for more information. 
               	 
            
 
            	 
            Once you have built your 
               		COBOL Server base image you can then build additional images, based on the base image, that include your COBOL applications as well as
               
               		COBOL Server. For more information on creating those additional images see 
               		Building an Image Containing an Application to Run under 
                  		  COBOL Server. 
               	 
            
 
            	  
            	  
            	 
            Before building a base image for 
               		COBOL Server you need to ensure that you have available the following: 
               	 
            
 
            	 
             
               		  
               - The installable executable file for 
                  			 COBOL Server. This is 
                  			 setup_cobol_server_for_docker_6.0_platform.gz and is supplied in the container demonstration for the 
                  			 COBOL Server base image. 
                  		  
               
- The appropriate license (.mflic) file for 
                  			 COBOL Server. 
                  		  
               
To build a base image that includes 
               		COBOL Server your Dockerfile needs to perform the following steps: 
               	 
            
  
             
               	  
               	  
               	 
                
                  		
                  - Specify a base image to work from. This will typically be 
                     		  rhel7/rhel:latest or 
                     		  suse/sles12sp3 depending on whether you are using Red Hat Linux or SUSE Linux. 
                     		
                  
- Define metadata for your image. This will make it easier to establish significant details of the image when you use the 
                     		  docker inspect or 
                        			 podman inspect command. 
                     		
                  
- Define any variables for filenames and folder locations. 
                     		
                  
- Install any packages that are required for 
                     		  COBOL Server to install successfully. See 
                     		  Software Requirements for more information. 
                     		
                  
- Copy the installable executable file for 
                     		  COBOL Server (setup_cobol_server_for_docker_6.0_platform.gz) from your host machine to a temporary folder in the image's filesystem. 
                     		
                  
- Create the user and groups whose details will be used when installing 
                     		  COBOL Server. 
                     		
                  
- Ensure that the installable executable file for 
                     		  COBOL Server has execute permissions, then execute it. 
                     		  
                     When running 
                        			 setup_cobol_server_for_docker_6.0_platform.gz you need to specify the following parameters: 
                        		  
                       
                        			  
                        				
                        - -IacceptEULA 
                           				
                        
-  to indicate that you accept the terms of the 
                           				  Micro Focus End User License Agreement (EULA). 
                           				
                        
- -ESadminID=user-name 
                           				
                        
- to set the Enterprise Server System Administrator Process User ID. 
                           				
                        
 
- Configure the dynamic linker run-time bindings to include the shared objects supplied with 
                     			 COBOL Server. 
                     			 
                     Doing this avoids the need to update the LD_LIBRARY_PATH environment variable. 
                        			 
                      
- Perform any required clean-up. This includes tasks such as resetting variables and deleting temporary folders. 
                     		
                  
- Install a license for 
                     		  COBOL Server then remove the license file. 
                     		
                  
Note: You might also want to create an image that you can log in to and execute shell or 
                  		
COBOL Server commands. This option is useful if you are not adding any application files to a base image but want to be able to use 
                  		
COBOL Server commands from it. 
                  		
                  
All of the container demonstrations offer the option to create such a login image, and those images are tagged with the suffix
                     "_login". See 
                     		  Running the Container Demonstration for the 
                        			 COBOL Server Base Image for information on how to specify that you want to create a 
                     		  _login image. For details on the commands required to build such an image, see the 
                     		  bld.sh script in any of the container demonstrations.