- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
在把自己的項目通過Docker進行打包時,由于項目中用到了crontab,不過使用到的基礎鏡像Python:3.6-slim并沒有安裝這項服務,記錄下在鏡像中安裝和配置crontab的過程。
Dockerfile
由于基礎鏡像中沒有crontab服務,需要在打包自己鏡像的Dockerfile中加入安裝cron服務的步驟。
FROM python:3.6-slim
MAINTAINER linuxidc root@landui.com
RUN apt-get update && \
apt-get install -y --no-install-recommends \
cron && \
rm -rf /var/lib/apt/lists/* && \
apt-get clean
RUN chmod +x ./docker-entrypoint.sh
ENV LC_ALL C.UTF-8
ENTRYPOINT ["./docker-entrypoint.sh"]
執行apt安裝時注意加入-y --no-install-recommends,并且在安裝完成后執行rm -rf /var/lib/apt/lists/* && apt-get clean命令,可以有效減小鏡像的體積。
這樣安裝完cron服務后,crontab服務并不會自啟動,還需要一個docker-entrypoint.sh啟動腳本來添加crontab的啟動命令。
啟動腳本
#!/bin/bash
set -x
# 保存環境變量,開啟crontab服務
env >> /etc/default/locale
/etc/init.d/cron start
/etc/init.d/cron start用于啟動crontab服務,但這樣啟動的crontab服務中配置的定時命令是沒有Dockerfile中設置的環境變量的。因此還需要在這之前執行env >> /etc/default/locale,這樣有Dockerfile中通過ENV設置的環境變量在crontab中就可以正常讀取了。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP