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

推薦する

Vue3.0プロジェクトの構築と利用プロセス

目次1. プロジェクト構築2: ディレクトリ構造3: コンポジションAPI 4: 基本的な使い方:最...

CSS フレックスレイアウトのリストの最後の行を左揃えにする N 通りの方法 (要約)

張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...

IDEA を使用して Web プロジェクトを作成し、Tomcat に公開する方法

目次ウェブ開発1. Web開発の概要Tomcatのインストールと設定Tomcatをインストールする2...

動的なデジタル時計を実装するJavaScript

この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...

ノードをMySQLデータベースに接続する際に発生する問題と解決策

今日、MySQL の新しいバージョン (8.0.21) をインストールしましたが、ノード フレームワ...

CSS カウンターとコンテンツの概要

コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

uniapp パッケージ化されたアプレット レーダー チャート コンポーネントの完全なコード

効果画像:実装コードは以下のとおりですビュー <canvas id="radar-c...

12個のJavascriptテーブルコントロール(DataGrid)が整理されています

DataGrid コントロールの DataSource プロパティがデザイン時に設定されている場合、...

Docker を使用して Microsoft Sql Server を展開するための詳細な手順

目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...

UDP DUP タイムアウト UPD ポート状態検出コード例

以前、単純な UDP サーバーとクライアントの例を書きましたが、その中で、自分自身をクライアントと見...

NodeJs の高メモリ使用量のトラブルシューティング実戦記録

序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...

Linux で yum と入力した後に -bash: /usr/bin/yum: No such file or directory という問題を解決する方法

Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...

DockerとDocker-Composeの使用例

Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテナ エンジンです...

複数の X 軸を使用して 7 日間の天気予報を実現するための Echarts サンプル コード

目次UIデザインEcharts の例の効果序文サンプルコード最終結果UIデザイン Echarts の...