nginx が Docker コンテナーに構成ファイルを自動的に生成する方法
実装アイデア
最後のコマンド実行はおそらく次のようになります:
docker run -d -p 80:80 -e xxx=xx 镜像名称 镜像中脚本路径
ここのスクリプトは dockerfile 内の cmd コマンドを置き換えます。 nginxを自動生成して起動するシェルスクリプトをビルドする必要があります。
#!/bin/bash #从环境变量里面获取lt开头,为了与其他环境变量区别开,例如lt_analysis=172.17.0.1:8083 result="" for a in $(env | grep ^lt) do old_ifs="$ifs" ifs="_" arr=($a) b=${arr[1]} ifs="=" arr=($b) ifs="$old_ifs" result="${result} location /${arr[0]}/ { proxy_pass http://${arr[1]}/${arr[0]}/; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; }" done #将nginx配置文件中nginx_conf中置换成变量result sed -i "s|nginx_conf|$(echo ${result})|g" /etc/nginx/nginx.conf cd /usr/sbin ./nginx
説明する必要があるのは、ビジネスで構成ファイル全体を生成する必要はなく、場所を生成して、元の構成ファイルでマークされた場所を置き換えるだけでよいということです。以下は、元の構成ファイルでマークされている場所です。
http { ... server { ... location / { root html; index index.html index.htm; } nginx_conf #error_page 404 /404.html; ...
このシェルスクリプトとデフォルトの設定ファイルをnginxのdockerfileイメージに入れて成功したと思ったのですが…上記のコマンドを実行してもコンテナが起動しませんでした。ログを取得して情報を確認します。しかし、***構文エラー: “(” 予期せぬ*** です。私のシェル スクリプトは centos でテストされており、実行できるのに、なぜこのエラーが報告されるのでしょうか? 調査した結果、次のことが判明しました。 dockerfile は基本イメージを公式 nginx として使用し、公式イメージは bash の代わりに ubuntu を使用してダッシュを使用してシェル スクリプトを実行しますが、これは実際には罠です。dockerfile を変更する以外に選択肢はありませんでした。以下は基本イメージを使用する方法です。 image centos.
from centos env nginx_version 1.10.3 env openssl_version 1.0.2k env pcre_version 8.40 env zlib_version 1.2.11 env build_root /usr/local/xx/nginx # 为了减小最终生成的镜像占用的空间,这里没有执行yum update命令,可能不是好的实践 # 为了加快构建速度,这里使用了163的安装源 #run yum -y update \ run yum -y install curl \ && mv /etc/yum.repos.d/centos-base.repo /etc/yum.repos.d/centos-base.repo.backup \ && curl http://mirrors.163.com/.help/centos7-base-163.repo -o /etc/yum.repos.d/centos7-base-163.repo \ && yum -y install gcc gcc-c++ make perl zip unzip \ && mkdir -p $build_root \ && cd $build_root \ && curl https://ftp.pcre.org/pub/pcre/pcre-$pcre_version.zip -o $build_root/pcre-$pcre_version.zip \ && curl https://www.openssl.org/source/openssl-$openssl_version.tar.gz -o $build_root/openssl-$openssl_version.tar.gz \ && curl http://www.zlib.net/zlib-$zlib_version.tar.gz -o $build_root/zlib-$zlib_version.tar.gz \ && curl https://nginx.org/download/nginx-$nginx_version.tar.gz -o $build_root/nginx-$nginx_version.tar.gz \ && tar vxzf nginx-$nginx_version.tar.gz \ && unzip pcre-$pcre_version.zip \ && tar vxfz zlib-$zlib_version.tar.gz \ && tar vxfz openssl-$openssl_version.tar.gz \ && cd nginx-$nginx_version \ && build_config="\ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-openssl=$build_root/openssl-$openssl_version \ --with-pcre=$build_root/pcre-$pcre_version \ --with-zlib=$build_root/zlib-$zlib_version \ --with-http_ssl_module \ --with-http_v2_module \ --with-threads \ " \ && mkdir -p /var/cache/nginx \ && ./configure $build_config \ && make && make install \ && rm -rf $build_root \ && yum -y remove gcc gcc-c++ make perl zip unzip \ && yum clean all #替换nginx默认文件 copy nginx.conf /etc/nginx/ #添加自动生成配置文件的shell脚本 copy 脚本名称 /root/ #暴露端口 expose 80 443 cmd ["nginx", "-g", "daemon off;"]
リマインダー: Docker コンテナはバックグラウンド Run をサポートしていません。コマンドが実行されると、コンテナは自然に終了します。ここでは、nginx 構成ファイル
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; daemon off; //这里添加,关闭后台运行 events { worker_connections 1024; } http {
以上がnginx が Docker コンテナーに構成ファイルを自動的に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

国内のミラーソースに切り替えることができます。手順は次のとおりです。1。構成ファイル/etc/docker/daemon.jsonを編集し、ミラーソースアドレスを追加します。 2。保存して終了した後、Docker Service Sudo SystemCtlを再起動してDockerを再起動して、画像のダウンロード速度と安定性を改善します。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

Dockerで画像をインポートするには、リモートリポジトリから事前に構築されたコンテナ画像を取得し、ローカルリポジトリにインポートすることが含まれます。手順には以下が含まれます。画像(Docker Pull)をDocker画像(Docker画像)にリストし、画像をローカルリポジトリ(Dockerインポート)にインポートします

Docker LNMPコンテナコールステップ:コンテナの実行:Docker Run -D - Name LNMP -Container -P 80:80 -P 443:443 LNMPスタックコンテナIPを取得する:Docker Inspect LNMP -Container | GREP iPaddress Access Webサイト:http://< container ip>/index.phpsshアクセス:docker exec -it lnmp -container bash access mysql:mysql -u roo

Dockerに画像を保存するには、Docker Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

Dockerネットワーク接続を停止するには、次の手順に従ってください。1。ネットワークの名前を決定して停止します。 2。Docker Network Stopコマンドを使用して、ネットワークを停止します。 3.停止ステータスを確認して、ネットワークが停止していることを確認します。
