2017-09-20 7 views
0

ライブサーバーでcertbot経由でSSLを設定しました。docker-compose.ymlで条件付きで別のconfigを実行する方法は?

volumes: 
    ... 
    - /etc/letsencrypt:/etc/letsencrypt 

これは、ライブサーバー上でうまく動作しますが、私は、私はアプリを実行し、http://localhostにそれを参照してください私のローカルマシン上で異なるセットアップを持っている:私はdocker-compose.ymlnginxセクションで、このためのボリュームマッピングを持っています。私は私のローカルマシン上でSSLを必要としないと思いますので、おそらく私はローカルで実行されている場合、この部分の設定を除外することができます。

また、このケースでは、ローカルではなくローカルで別のものを設定する必要があります。

ローカルセットアップとライブセットアップの違いを正しく区別し、環境に応じて自動的に適用する方法が問題です。

+0

名前と容量が異なる2つの異なる容器を回転させても、ローカルとライブの違いはありませんか? –

答えて

0

環境変数は通常、このような単純なランタイム移植性を作成するのに適しています。多くのツール/アプリケーション/パッケージは、環境変数だけで実行時設定をサポートします。ここで

environment: 
    - NGINX_CONF=localhost.conf 

は、localhost.confは、ローカルマシンのためのあなたのnginxの設定次のようになります。残念ながら、nginxのは、これらのアプリケーションnginxのために

の一つではない、このような何かを試してみてください。何らかの種類のentrypoint.shを実行し、NGINX_CONFで指定された設定を、nginxが(通常は/etc/nginx/conf.dまたは/ etc/nginx/sites-enabledに)持ち込む場所にシンボリックリンクします。

ln -s /etc/nginx/conf.d/running.conf /app/nginx-confs/${NGINX_CONF} 

これは、あなたが/アプリ/ nginxの-会議通話数でコンテナにコピーされたあなたの会議通話数のすべてを持っていますが、好きな場所、彼らが生きることができ前提としています。 localhost.confはサイトをhttp://localhostとして提供します。

ライブサーバーでは、NGINX_CONF = liveserver.confを渡します。このconfはhttps://www.liveserver.comになります。

この時点で、環境変数を使用してコンテナを起動するときに実行するnginx設定を選択できます。このようにしたくない場合でも、実行時に環境変数を設定する方法として、正しい方向に進み、環境変数を考えることができればうれしいです。


実行時にnginx confを管理するための、より詳細な方法があります。 confdのようなもの、またはmustache templating engineのようなテンプレートエンジンはオプションです。 envディレクティブとset_by_luaというnginxにはラウンドアバウトの方法がありますが、これは私にとって最もハックな解決策のように感じます。

0

お客様のニーズに応じて、異なるdocker-compose.ymlファイルを生成するためにMakefileと記述することができます。

のMakefile:

# Makefile 
-include config.mk 

A_CONFIG_VAR ?= default_value 

all: docker-compose.yml 

docker-compose.yml: docker-compose.yml.in config.mk 
     @echo 'Generating docker-compose.yml' 
     @sed -e 's|@@[email protected]@|$(A_CONFIG_VAR)|g' $< > [email protected] 

config.mk:このファイルには、コンフィギュレーション変数を置きます。

# config.mk 
A_CONFIG_VAR = "a_value" 

docker-compose.yml.in:入力ドッカーを作成します。ymlファイルのように

volumes: 
    - /path/to/somewhere:@@[email protected]@ 

config.mkの内容を必要に応じて変更してください。次に実行してください

make 

これはdocker-compose.ymlファイルを生成するはずです。

関連する問題