LoginSignup
0
0

More than 3 years have passed since last update.

DockerでNginxコンテナ建てた際に環境変数の渡し方でハマった時の備忘録

Posted at

NestJSで作成したサーバーに対してNginxから飛ばそうとした際に、NestJSのポートを可変にできる様にしようとしてNginxのconfに環境変数を渡せずハマったので備忘録として残します。

結論

dockerhubの公式イメージに書いてありました。。
https://hub.docker.com/_/nginx
Using environment variables in nginx configurationに書いてあります

confそのものではなく、conf.templateをコンテナにコピーしてやるだけです
※ignxのバージョン1.19から使える機能みたいです

docker-compose.yml
services:
  server:
    image: node:12-alpine
    container_name: server
    ・・・(省略)・・・
    environment:
      - PORT=${SERVER_PORT}

  proxy:
    image: nginx
    container_name: proxy
    depends_on:
      - server
    volumes:
      - ./nginx/default.conf.template:/etc/nginx/templates/default.conf.template
    ports:
      - 80:80
    environment:
      - SERVER_PORT=${SERVER_PORT}
nginx/default.conf.template
server {
    listen 80;
    server_name localhost;

    location / {
        proxy_redirect                      off;
        proxy_pass http://server:${SERVER_PORT};
    }
}

何にハマったのか?

  • nginx 環境変数とかで検索すると以下の方法が出てくる
    • perl_setやset_by_luaを使う方法
    • 普通にconfファイルを書き換える方法

ファイルを書き換えるのはめんどくさかったので perl_setでやろうとしたら./configureがnot foundとなってしまいperl_setが使えなかった。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0