スーパーバイザーによる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 つのソリューション

推薦する

Dockerイメージをインポートおよびエクスポートする方法

この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...

モバイルデバイスで 1 ピクセルの境界線の問題を解決するいくつかの方法 (5 つの方法)

この記事では、モバイルデバイス上の 1 ピクセルの境界線の問題を解決する 5 つの方法を紹介します。...

vue.js ルーターのネストされたルート

序文:ルートでは、主要部分は同じでも、基礎となる構造が異なることがあります。たとえば、ホームページに...

MySQL クラスター化インデックスのページ分割原理の分析例

この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...

docker を使用して minio と java sdk を構築するプロセスの詳細な説明

目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...

Mysql マスタースレーブ同期構成の実践の詳細な説明

1. はじめに以前、「MySQL マスター スレーブ同期の原理」という記事を書きました。この記事を読...

css3 flexレイアウト justify-content:space-between 最後の行は左揃えになります

justify-content:space-betweenレイアウトを使用する場合、要素の最後の行に...

JavaScript の絶妙なスネーク実装プロセス

目次1. HTML構造を作成する2. テーブルを作成する3. ヘビの頭と体を作る4. 食べ物を作る5...

jquery+springbootでファイルアップロード機能を実現

この記事の例では、ファイルアップロード機能を実現するためのjquery+springbootの具体的...

CentOS に Redis と MySQL をインストールする

1|0MySQL(MariaDB) 1|11. 説明MariaDB データベース管理システムは My...

JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

オブジェクトがメソッドを呼び出す順序:インスタンス内にメソッドが存在しない場合は、インスタンス オブ...

mysql5.7.19 zip 詳細なインストールプロセスと構成

MySQL v5.7.19 正式版(32/64 ビットインストール版および zip 解凍版) 1. ...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...

MySQL トリガー構文とアプリケーション例

この記事では、例を使用して MySQL トリガーの構文とアプリケーションを説明します。ご参考までに、...