スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成

yumソースを設定する

cd /tmp/docker
vim Dockerファイル
rhel7より
EXPOSE 80 22 # ポート80と22を外部に公開します COPY dvd.repo /etc/yum.repos.d/dvd.repo
&& yum install -y httpd openssh-server openssh-clients supervisor
&& yum すべてをクリーン 
&& ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" 
&& ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" 
&& echo ルート:redhat | chpasswd
supervisord.conf をコピー /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]
vim スーパーバイザー.conf
[監督者]
ノーデーモン=true

[プログラム:sshd]
コマンド=/usr/sbin/sshd -D

[プログラム:httpd]
コマンド=/usr/sbin/httpd
docker ビルド -t rhel7:v3
ビルド コンテキストを Docker デーモンに送信しています 8.192 kB
ステップ 1/6: rhel7 から
 ---> 0a3eb3fde7fd
ステップ2/6: EXPOSE 80 22
 ---> 5727c9e984a5 で実行中
 ---> e25a8a0821f7
中間コンテナ 5727c9e984a5 を削除しています
ステップ 3/6: dvd.repo を /etc/yum.repos.d/dvd.repo にコピーする
 ---> 2d9e8f9648a7
中間コンテナ 62955f7a7a74 を削除しています
ステップ 4/6: rpmdb --rebuilddb を実行 && yum install -y httpd openssh-server openssh-clients supervisor && yum clean all && ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" && echo root:redhat | chpasswd
依存関係が更新されました:
 elfutils-libelf.x86_64 0:0.166-2.el7                     

完了!
読み取り不可能なリポジトリ '///etc/yum.repos.d/rhel7.repo' をスキップします
リポジトリのクリーニング: docker dvd-rhel
すべてをクリーンアップする
 ---> 1cb2f9e34bac
中間コンテナ 33cb452dbc8d を削除しています
ステップ 5/6: supervisord.conf をコピーする /etc/supervisord.conf
 ---> e8de2ff5ca3c
中間コンテナ f219cb2b6a88 を削除しています
ステップ 6/6 : CMD /usr/bin/supervisord
 ---> eddfb3973ad2 で実行中
 ---> dbf4cf5cb116
中間コンテナ eddfb3973ad2 を削除しています
dbf4cf5cb116 を正常に構築しました

docker run -d --name vm1 -v /tmp/docker/web/:/var/www/html rhel7:v3

ドッカーps

ドッカー検査vm1
      「ネットワーク」: {
        "橋": {
          "IPAMConfig": null、
          「リンク」:null、
          「エイリアス」: null、
          "ネットワークID": "126902125dd9c54631622845c1a75d656b45023840c57944ec24f4acecf6dc3f",
          "エンドポイントID": "3d995f01fce91968f59b151a19ba3868292efe0a61c2ef355bcd1eb84bda7248",
          「ゲートウェイ」: 「172.17.0.1」、
          "IPAddress": "172.17.0.2", # コンテナの IP
          "IPプレフィックス長": 16,
          "IPv6ゲートウェイ": "",
          "グローバルIPv6アドレス": "",
          "グローバルIPv6プレフィックス長": 0,
          "Macアドレス": "02:42:ac:11:00:02"
        }
      }

確認する:

カール 172.17.0.2

sshd サービスを確認します。

補足知識: Dockerfile を使用してスーパーバイザー コンテナ デプロイメント プロジェクトをビルドします。CMD ["supervisord","-c","/etc/supervisord.conf"] の実行に失敗しました

問題の説明:

スーパーバイザー コンテナを作成するための Dockerfile を作成する場合、スーパーバイザーを起動する最後のコマンド -> CMD ["supervisord","-c","/etc/supervisord.conf"] は機能しませんが、コンテナ内で supervisord -c /etc/supervisord.conf を実行すると正常に実行できます。

まずDockerfileファイルのコードを貼り付けます

python:latestから 
ワークディレクトリ /root/
 
mkdir /etc/supervisorを実行します。
mkdir -p /root/projects/logs/gunicorn/ を実行します。
mkdir -p /root/projects/logs/celery/ を実行します。
mkdir -p /root/projects/Sy_EvaluateJkApi/logs/ を実行します。
実行 echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
apt-get update -yを実行します
apt-get install -y git lrzsz vimを実行します。
pip install supervisor -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
pip install gunicorn -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
pip install gevent -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
/usr/local/bin/echo_supervisord_conf > /etc/supervisord.confを実行します。
RUN echo "[include]">>/etc/supervisord.conf
実行 echo "files = /etc/supervisor/*.ini">>/etc/supervisord.conf
 
sy.ini を追加します /etc/supervisor/sy.ini
Sy_EvaluateJkApi を追加します /root/projects/Sy_EvaluateJkApi
pip3 install -r /root/projects/Sy_EvaluateJkApi/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
エクスポーズ8800
CMD ["supervisord","-c","/etc/supervisord.conf"]

docker build -t system:test. コマンドを使用してコンテナ イメージをビルドする場合は例外はありませんが、docker run -itd system:test を使用してコンテナを実行すると、コンテナが実行されていないことが示されます。

解決:

コマンド CMD ["supervisord","-c","/etc/supervisord.conf"] を CMD ["supervisord","-n","-c","/etc/supervisord.conf"] に変更すると、正常に実行されます。

これは supervisor -n/--nodaemon -- run in the foreground (設定ファイルの 'nodaemon=true' と同じ) に書かれている内容です。-n を追加すると、supervisor はフォアグラウンドで実行され続けます。

以上、スーパーバイザー下のDockerfileのマルチサービスイメージパッケージング操作がエディターが皆さんにシェアする内容の全てです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfileを使用してDockerイメージを構築する手順
  • Dockerfileを使用してApacheイメージを作成する方法
  • Dockerイメージの作成Dockerfileとコミット操作
  • Dockerfile に基づいて Tomcat イメージを構築する方法
  • Dockerfile を使用して Docker イメージをカスタマイズする方法
  • カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfileを使用してDockerイメージを構築する

<<:  innerHTML を理解する

>>:  js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

推薦する

MySQLに画像を保存する方法

1 はじめにデータベースを設計する場合、画像や音声ファイルをデータベースに挿入することは避けられませ...

JavaScript はクリックして画像の形状を変更する (変換アプリケーション) を実装します。

JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...

Docker コマンドラインの完全ガイド (知っておくべき 18 のこと)

序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...

シンプルなドラッグ効果を実現するjs

この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

MySQL 5.7.17無料インストール版のインストールと設定

MYSQLバージョン:MySQL Community Server 5.7.17、インストール不要版...

データベースのインデックス作成に関する知識ポイントのまとめ。必要な情報はすべてここにあります。

データベースインデックスについては皆さんもよくご存知だと思います。 インデックスは、データベース テ...

Linux システムでのルート ディレクトリ拡張の概要

1. Linuxディスクの状態を確認する df -lh lsblkコマンドは、使用可能なすべてのブロ...

jQueryはスライディングタブを実装する

この記事では、スライドタブを実装するためのjQueryの具体的なコードを参考までに紹介します。具体的...

js 配列エントリ() 反復メソッドを取得する

目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...

Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

iノードとは何ですか? inode を理解するには、まずファイル ストレージから始める必要があります...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

MySQL 8.0.21 の最新バージョンのダウンロード、インストール、設定に関する詳細なチュートリアル

1. ダウンロード1. インストールパッケージをダウンロードするMySQL ダウンロード パス: h...

mysql 計算関数の詳細

目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...

HTML コメント HTML 内のテキストコメントをマークするための記号

HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...

HTML でさまざまなスペースの特徴と表現を探る (推奨)

I. 概要HTML テンプレートを作成するときに、テキスト レイアウトの手段としてスペースが使用さ...