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
結論
めちゃくちゃめんどい.
もうちょっと賢く環境変数を使用できるといいなぁ...
あと記事が雑すぎるのはいつものことなのでよろしくお願いします. 気が向いたら書き直します