# chap3 - 在docker中小心使用crontab ###### tags: `crontab` - edited:2020.02.06 --- - 相關文章可以參考[Crontab教學 - 總覽](https://hackmd.io/0UWA1D-LRTOkx-EH4xnWQA?edit) ## Intro - 一般使用crontab依照前兩章的設定基本上就可以了。 - 但在`docker`環境中,有太多的雷要踩,必須要<font color='red'>小心使用</font> ## 在docker container裡面使用crontab - 如果你以為crontab會讀得到docker container裡面的`環境變數`, 那你就大錯特錯 :::info >- <font color='red'> docker container裡面的crontab完全讀不到docker container裡面的環境</font> >- <font color='red'> docker container裡面的crontab完全讀不到docker container裡面的環境</font> >- <font color='red'> docker container裡面的crontab完全讀不到docker container裡面的環境</font> 踩雷踩到很生氣, 所以要說三次 ::: - 做個實驗,在`Dockerfile`加入一些預設的變數,然後使用crontab去印出env,實驗結果,環境變數卻**不包含你預設的環境變數**: ``` HOME=/root LOGNAME=root PATH=/usr/bin:/bin SHELL=/bin/sh PWD=/root ``` ### 讓你的任務順利取得設定的環境變數 - `crontab` 在執行任務時,會開啟一個全新的shell環境, 故`docker container`設定的環境變數,<font color='red'>通通抓不到</font> - 要取得設定的環境變數,我們可以在執行任務前面加上新增環境變數的指令,如:`export LANG=C.UTF-8 & export DOCKER_HOME=/home/smart`,多個環境變數用`&`串起來即可。