2016-08-16 5 views
2

Dockerを使用してnginx環境を構築しています。私は可能性がある場合は、ビルド中にports(80、443)を公開することが公開されている可能性があります(つまり、(中間)コンテナ内のサーバーへのネットワークアクセスが必要です)。ビルド時にDockerがポートを公開する

これは可能ですか?

+0

あなたは本当に画像に証明書を入れたくありません;) – Auzias

+1

あなたがte Imageを公開する場合、私は同意します。このためにデータコンテナを使用するだけでも意味があります。しかし、ビルド中にポートをパブリッシュすることが有用な場合(またはビルドを使用して実行される中間コンテナにドッキングランオプションを渡す)というユースケースを想像することもできます。 –

+0

私は出版に関するポートを設定せずに証明書について話していました。さて、Dockerイメージが特定のポート(ビルド時に設定)に強制的に使用できると仮定しましょう。この特定のポートで既に実行中のサービスがある場合はどうしたらよいですか?または、この特定のポートがファイアウォールされている場合IMOでは、すべてのサービスがデフォルトのポートを変更できるようにする必要があります。 – Auzias

答えて

3

私はそれを見たことがないと私はそれが設計上可能ではないと思う。

  • あなたは2ヶ月後に再保証ライセンスに必要があるかもしれませんし、一般的には画像全体

を再構築する必要があります画像

  • で秘密鍵を置くべきではありません、これは時にはサイドキックと呼ばれるコンパニオンのレコーダーを使用して行われます。あなたは基本的にあなたのアプリケーション(とそのコンテナ)とletsencryptコンテナを持っていて、nginxがマウントするボリュームを露出させるのはvolume_fromです。このボリュームは、letsencryptコンテナがフェッチされた証明書を置くものです。これはイメージの作成中ではなく、イメージの起動時に発生します。ドッカー作成ファイルを使用して、必要なものを設定します。

    など。あなたはここに A)https://github.com/rancher/community-catalog/blob/master/templates/letsencrypt/2/docker-compose.yml b)またはhttp://letsencrypt.readthedocs.io/en/latest/using.html#running-with-docker外観を持つことができます

    a)は、あなたがどんなファイルを提供していない、非常によくドッカ - コンの道を、スイートなりますが、ENV変数を使用して必要としているドメインを定義しますホスト上の構成と同じです(移植性を保ちます)。

    これはすべてnginx-serverに置くことができますが、多くの理由(例:nginxを設定する必要があるなど)のために、ベストプラクティスではありません。あなたは代替DNSモードを確認し使用して、その代わりのポートに接続するバックを使用して検証され、「時間を構築」するために固執する場合


    、あなたではなく、DNSエントリを使用していくつかのリンクを確認しますあなたがhttp://cloudflare.comを選択することをお勧めしますa)のコンテナがこのシナリオでは、この

    をん - - https://github.com/lukas2511/letsencrypt.sh/wiki/Examples-for-DNS-01-hooks - その のために私の知る限り、それは無制限のドメインのための無料APIアクセスを持つ唯一のDNSサービスで、何かはお金がかかるか、限界があるのいずれか。

  • 関連する問題