スーパーバイザーによる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 が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

JavaScript でツリー構造を構築するための効率的なアルゴリズムについての簡単な説明

目次導入アイデアID配列インデックスのマッピング関係を確立するツリー構造の構築原理要約する導入組織階...

TypeScriptのインストールと使用方法と基本的なデータ型

最初のステップはTypeScriptをグローバルにインストールすることですnpmを使用してインストー...

JS関数の継承について学ぶ記事

目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...

CSSアニメーションに基づくSVGボタンのサンプルコード

具体的なコードは次のとおりです。 <a href="#"> <...

MySQLでデータを削除してもディスク領域が解放されないのはなぜですか

目次問題の説明解決問題分析問題の説明MySQL で delete ステートメントを使用してデータを削...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....

Linux で Grafana をインストールし、InfluxDB モニタリングを追加する方法

Grafana をインストールします。公式 Web サイトでは、直接インストールできる Ubuntu...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

図を使ってWeb2.0とは何かを説明する

最近はWeb2.0という言葉をよく耳にしますが、Web2.0とは何でしょうか? Web 1.0 とど...

MySQLにおけるACIDトランザクションの実装原理の詳細な説明

導入いつものように、シーンから始めましょう〜インタビュアー:「トランザクションの4つの特性をご存知で...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

4つの柔軟なScssコンパイル出力スタイル

多くの人は、Scss を使用する瞬間からコンパイル方法を説明されてきました。したがって、コマンドのコ...