🐶
Docker+Nginx利用時の環境変数の利用(サンプルDockerfileの記述あり)
はじめに
Docker+Nginxを用いてproxyサーバを作ろうとしたときに、環境変数から設定したかったのに少し手間取ったので、その備忘録。
フォルダ構造
./
|-Dockerfile
'-nginx.config.template
ファイル内容
今回は仮に以下の環境変数を使用することとしました。
- PORT
- FRONTEND_PATH
- BACKEND_PATH
nginx.config.template
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen ${PORT};
server_name localhost;
client_max_body_size 500M;
location / {
proxy_pass ${FRONTEND_PATH};
}
location /api {
proxy_pass ${BACKEND_PATH};
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
Dockerfile
FROM nginx:1.17.10-alpine
WORKDIR /etc/nginx
COPY ./nginx.conf.template /etc/nginx/nginx.conf.template
# ここが効いています。envsubstというコマンドでテンプレートファイルから設定ファイルを生成している感じ
CMD /bin/sh -c "envsubst < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && nginx -g 'daemon off;'"
おわりに
テンプレートファイルってこうやって作れるんですね。あんまりこうしてまとまっていることがないので、linux界隈で常識なんでしょうけど。
Discussion