Dockerで、crond使って、環境変数が反映されない対応

Dockerfileに環境変数を書いても、crond実行時、環境変数が反映されていない。

※実行中のDockerに入ると、環境変数が見えて実行できるのでハマった!

(1)Dockerfileの記載内容に追記する

# 環境変数の内容
ENV SVRIP=192.168.1.1
# crond が環境変数を反映しない対応。shell内で強制的に実行し反映する
RUN echo “export SVRIP=${SVRIP}” > /root/svrip.txt

(2)crond内のスクリプトを確認する

05 01 * * * root /opt/script/shell.sh
(3)スクリプト(/opt/script/shell.sh)を修正し、(1)の環境変数を反映させる
#!/bin/bash

## shell内で、環境変数を登録する
source /root/svrip.txt
## 確認のため、実行する。(デバッグ等で利用する)
echo “SVRIP: ${SVRIP}” > /opt/var/svrip.log

格好悪いがソースに埋め込むより良い感じ。
タイトルとURLをコピーしました