Example of how to automatically start an application service in a Docker container

Example of how to automatically start an application service in a Docker container

If you want the application service in the Docker container to start automatically when the container is started. You only need to write the service startup script in the Dockerfile, and then use the Dockerfile to reconstruct the image:

  • Write an application service self-start script
  • Writing a Dockerfile
  • Reconstructing the image
  • Open the container

Write a service self-start script (dockerd)
(Take Tomcat as an example)

#!/bin/bash
#
# 
#
# chkconfig: 345 98 30
# description: tomcat program.
# processname: tomcat
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
#. /etc/sysconfig/network


prog="tomcat"

checkprocess()
{
  chkret=`ps -ef |grep $prog |grep -v "grep" |wc -l`
    return $chkret
}

start()
{
    cd /usr/local/tomcat/bin/
   ./startup.sh
  echo "Service $prog started!"
}

#/usr/sbin/nscd &
/usr/sbin/sshd -D &
while [ true ]
do
        DNSIP=172.18.3.179
          ping=`ping -c 3 $DNSIP|awk 'NR==7 {print $4}'`
        if [[ $ping -eq "3" ]]
        then
            break
        fi
    sleep 3
done

while [ true ]
do
    checkprocess
     if [[ $chkret -eq "0" ]]
        then
              start
     #nscd -i hosts
        else 
          echo "Service $prog is running."

        fi
    sleep 60
done
exit 0

Writing a Dockerfile

FROM tomcat

MAINTAINER liu "[email protected]"

ADD dockerd /etc/rc.d/init.d/
RUN chmod 777 /etc/rc.d/init.d/dockerd

ENV JAVA_HOME /usr/local/jdk1.6.0_30
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

CMD /etc/rc.d/init.d/dockerd

Among them, ADD adds the scripts in the same directory to the specified location of the image, and ENV sets the Java environment variable (very important, the self-starting script cannot be executed successfully without this sentence). There can only be one CMD command, which is used to execute commands when the container starts. It can also be a script.

Reconstructing the image
**pass
docker build -t new image name.
Successfully created a new image

Open the container

docker run -d -h="s" –name="s" new image name

Then, I found that tomcat was already started

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Execute the shell or program inside the Docker container on the host
  • Use Shell scripts to batch start and stop Docker services
  • How to solve the Docker container startup failure
  • Detailed explanation of the solution to the error of using systemctl to start the service in docker
  • Add port mapping after docker container starts
  • Running Flume in a Docker container and starting it without outputting running logs
  • Detailed explanation of Shell script control docker container startup order

<<:  64-bit CentOs7 source code installation mysql-5.6.35 process sharing

>>:  Vue form post request combined with Servlet to realize file upload function

Recommend

How to modify create-react-app's configuration without using eject

1. Why is eject not recommended? 1. What changes ...

33 of the best free English fonts shared

ChunkFive Free Typefamily Cuprum JAH I Free font Y...

MySQL database import and export data error solution example explanation

Exporting Data Report an error SHOW VARIABLES LIK...

Detailed explanation of anonymous slots and named slots in Vue

Table of contents 1. Anonymous slots 2. Named slo...

Detailed explanation of count without filter conditions in MySQL

count(*) accomplish 1. MyISAM: Stores the total n...

How to deploy your first application with Docker

In the previous article, you have installed Docke...

Docker renames the image name and TAG operation

When using docker images, images with both REPOSI...

Basic security settings steps for centos7 server

Turn off ping scanning, although it doesn't h...

Detailed explanation of Linux commands sort, uniq, tr tools

Sort Tool The Linux sort command is used to sort ...

Analysis of MySQL's planned tasks and event scheduling examples

This article uses examples to describe MySQL'...