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

推薦する

MySQL シリーズ 8 MySQL サーバー変数

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

Vue3 を使用して虫眼鏡効果を実現する方法の例

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...

CSSを使用して複数の画像を中央に水平に表示する方法

まず実装手順について説明します。最終結果 2. コードの実装HTML部分 <div class...

JavaScript で配列の変更を監視する方法

序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...

HTMLチェックボックス説明テキストをクリックして状態を選択/チェック解除します

Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...

MySQL における count(*)、count(1)、count(col) の違いのまとめ

序文count 関数は、テーブルまたは配列内のレコードをカウントするために使用されます。count(...

ボタンをEnterキーに関連付けるjsコード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <ス...

よく使われる HTML タグとその特徴の完全なリスト

まず、HTML タグのいくつかの特性を知っておく必要があります。 1. 「<keyword&g...

NginxにLuaモジュールを追加する方法

luaをインストールする http://luajit.org/download/LuaJIT-2.0...

ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

最近、私はデザインには階層感覚が必要だと言っています。この階層感覚には、色の重ね合わせや要素の重ね合...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...

外部ネットワークアクセスを許可するためのMysql5.6の設定手順の詳細を共有する

最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...

dockerでredis5.0.3をインストールする方法

1. 公式5.0.3イメージを取得する [root@localhost ~]# docker pul...

vue-router からのフロントエンドルーティングの 2 つの実装

目次モードパラメータハッシュ履歴ハッシュ履歴.push()ハッシュ履歴.replace()アドレスバ...

MySQLデータベースを別のマシンに移行する方法の詳細な説明

1. まず、移行サーバー上のデータ ファイルを見つけます。MySQL 5.7 とデフォルトのインスト...