LoginSignup
0
0

More than 1 year has passed since last update.

herokuでのdocker-compose.ymlの参照範囲についての検証結果

Posted at

はじめに

前回下記のようなものを投稿していました。

herokuでイメージ・コンテナ作成するときは「docker-compose.yml」の「ports」って利用していないのでは?

検証方法

前回までは、テスト環境側のホストOSの環境変数、および本番環境であるherokuの環境変数に[wk_port]を追加し、下記の設定とした。

  • テスト環境:8888
  • 本番環境 :未設定

docker-compose.ymlは下記の状態

今、どっちの環境で動作してますよ、の判断を[wk_port]で行おうとしていた。

docker-compose (修正前).yml
version: '3'

services: 
 <サービス名>: 
  build: 
   dockerfile: ./Dockerfile
  ports:
   - $wk_port:$wk_port
  environment: 
   wk_port: $wk_port

ただ、本番環境(heroku)では[wk_port]が未設定にもかかわらず、アプリケーションは動作していたので、本番環境(heroku)では「ports」は利用していないと断定。


docker-compose.ymlは下記の状態に修正

今、どっちの環境で動作してますよ、の判断を新規の環境変数[mode]で行うように修正。
かつ、「ports」は「8888:8888」に修正し、テスト環境でのみポートフォワーディングとして利用。

docker-compose (修正後).yml
version: '3'

services: 
 <サービス名>: 
  build: 
   dockerfile: ./Dockerfile
  ports:
   - 8888:8888
  environment: 
   mode: $mode

Flask起動の判断も環境変数「mode」で行うように修正。
< 補足:modeの値 >
 テスト環境:dev
 本番環境 :pro

hello.py
from flask import Flask
import os

app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world3'

if __name__ == '__main__':
    if os.environ.get('mode','')=='dev':
        app.run(debug='true',host='0.0.0.0',port='8888')            
    else:
        app.run(debug='true',host='0.0.0.0',port=os.environ.get('PORT','5000'))

検証結果

うまくいきました。

ということで、herokuでイメージ・コンテナ作成するときは「docker-compose.yml」の「ports」って利用していない!ということですね

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