docker-compose + cron の環境変数の扱いが面倒だった

やりたいこと

docker-compose から渡した環境変数を cron で実行しているGoのプログラム内で扱いたい. 下記の docker-compose を例に,今回は MODE っていう環境変数を扱います.

services:
  crontest:
    build: .
    container_name: crontest
    environment:
      - MODE=DEVELOPMENT
    tty: true

あと github にソースあげました. github.com

解決方法

事前に環境変数をファイルに吐き出して Go のプログラムが実行される前に読み取った.

crontab

#!/bin/bash -l
* * * * * export $(cat /root/root.env | xargs); /go/src/app/main

この /root/root.env はDockerfile で CMD を使用して吐き出してます.

Dockerfile

(省略)
CMD env > /root/root.env && cron && tail -f /var/log/hoge.log

結論

めちゃくちゃめんどい.

もうちょっと賢く環境変数を使用できるといいなぁ...

あと記事が雑すぎるのはいつものことなのでよろしくお願いします. 気が向いたら書き直します