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

vue $set implements assignment of values ​​to array collection objects

Vue $set array collection object assignment In th...

Integration practice of Vue+Element background management framework

Table of contents Vue+ElementUI background manage...

Parsing the commonly used v-instructions in vue.js

Table of contents Explanation of v-text on if for...

Complete steps to use mock.js in Vue project

Using mock.js in Vue project Development tool sel...

Simple tutorial on using Navicat For MySQL

recommend: Navicat for MySQL 15 Registration and ...

How to expand the disk size of a virtual machine

After Vmvare sets the disk size of the virtual ma...

HTML table tag tutorial (46): table footer tag

The <tfoot> tag is used to define the style...

MySQL query example explanation through instantiated object parameters

This article will introduce how to query data in ...

Complete steps to build a Laravel development environment using Docker

Preface In this article, we will use Docker to bu...

Learn asynchronous programming in nodejs in one article

Table of Contents Introduction Synchronous Asynch...

HTML Tutorial: Unordered List

<br />Original text: http://andymao.com/andy...