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