Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 Dockerfile にサービス起動スクリプトを記述し、Dockerfile を使用してイメージを再構築するだけです。

  • アプリケーションサービスのセルフスタートスクリプトを作成する
  • Dockerfileの作成
  • イメージの再構築
  • コンテナを開く

サービスのセルフスタートスクリプトを書く (dockerd)
(Tomcatを例に挙げます)

#!/bin/bash
#
# 
#
# chkconfig: 345 98 30
# 説明: tomcat プログラム。
# プロセス名: tomcat
# ソース関数ライブラリ。
. /etc/rc.d/init.d/functions
# ソースネットワーク構成。
#. /etc/sysconfig/ネットワーク


プログラム = "tomcat"

チェックプロセス()
{
  chkret=`ps -ef |grep $prog |grep -v "grep" |wc -l`
    $chkretを返す
}

始める()
{
    cd /usr/local/tomcat/bin/
   ./スタートアップ.sh
  echo "サービス $prog が開始されました!"
}

#/usr/sbin/nscd &
/usr/sbin/sshd -D &
[ 真 ] である間
する
        172.18.3.179 のIPアドレス
          ping=`ping -c 3 $DNSIP|awk 'NR==7 {print $4}'`
        [[ $ping -eq "3" ]]の場合
        それから
            壊す
        フィ
    睡眠3
終わり

[ 真 ] である間
する
    チェックプロセス
     [[ $chkret -eq "0" ]]の場合
        それから
              始める
     #nscd -i ホスト
        それ以外 
          echo "サービス $prog は実行中です。"

        フィ
    睡眠60
終わり
終了 0

Dockerfileの作成

tomcatから

メンテナー liu "[email protected]"

dockerd /etc/rc.d/init.d/ を追加します。
chmod 777 /etc/rc.d/init.d/dockerd を実行します。

環境変数JAVA_HOME /usr/local/jdk1.6.0_30
環境変数 PATH $JAVA_HOME/bin:$PATH
ENV クラスパス .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

コマンド /etc/rc.d/init.d/dockerd

このうち、ADD はイメージの指定場所に同じディレクトリ内のスクリプトを追加し、ENV は Java 環境変数を設定します (非常に重要、この文がないと自己起動スクリプトは正常に実行できません)。CMD コマンドは 1 つだけ存在でき、コンテナの起動時にコマンドを実行するために使用されます。スクリプトでも構いません。

イメージの再構築
**合格
docker build -t 新しいイメージ名。
新しいイメージを作成しました

コンテナを開く

docker run -d -h="s" –name="s" 新しいイメージ名

すると、Tomcatがすでに起動していることがわかりました

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ホスト上のDockerコンテナ内でシェルまたはプログラムを実行する
  • シェルスクリプトを使用して Docker サービスを一括で開始および停止する
  • Dockerコンテナの起動失敗を解決する方法
  • docker で systemctl を使用してサービスを開始する際のエラーの解決方法の詳細な説明
  • Dockerコンテナの起動後にポートマッピングを追加する
  • Docker コンテナで Flume を実行し、実行ログを出力せずに起動する
  • シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明

<<:  64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

>>:  Vue フォームのポストリクエストとサーブレットを組み合わせてファイルアップロード機能を実現する

推薦する

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

MySQLインデックスの失敗の典型的なケース

目次典型的なケース付録: 一般的なインデックス障害の状況典型的なケース次の構造を持つ 2 つのテーブ...

Vueのドラッグスクリーンショット機能を実装する簡単な方法

マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...

HTML テーブルタグチュートリアル (23): 行の境界線の色属性 BORDERCOLORDARK

行ごとに、暗い境界線の色を個別に定義できます。基本的な構文<TR 境界線の色を暗くする=col...

Dockerは起動されていないコンテナの設定情報を変更します

私が初めてdockerを使用したときは、dockerfileやdocker-composeを使用して...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...

VMware15 の Deepin インストール詳細チュートリアル (画像とテキスト)

序文Deepin のユーザー インターフェイスは、使用時に非常に見栄えがします。インターフェイス効果...

mysqlサーバーは--skip-grant-tablesオプションで実行されています

MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...

Mysql 主キー UUID と自動増分主キーの違いと利点と欠点

導入私はしばらくの間、postgresql データベースを使用していました。クラウドに移行した後、自...

Ubuntu環境でのPHP関連のパスと変更方法

Ubuntu環境におけるPHP関連パスPHP パス /usr/bin/php phpize5 /us...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

Linux dirnameコマンドの具体的な使い方

01. コマンドの概要dirname - ファイル名からディレクトリ以外のサフィックスを削除しますd...

今日は、珍しいけれど役に立つJSテクニックをいくつか紹介します

1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...

JDBC および MySQL 一時テーブルスペースの詳細な分析

背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...