- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
在把自己的項目通過(guò)Docker進(jìn)行打包時(shí),由于項目中用到了crontab,不過(guò)使用到的基礎鏡像Python:3.6-slim并沒(méi)有安裝這項服務(wù),記錄下在鏡像中安裝和配置crontab的過(guò)程。
Dockerfile
由于基礎鏡像中沒(méi)有crontab服務(wù),需要在打包自己鏡像的Dockerfile中加入安裝cron服務(wù)的步驟。
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安裝時(shí)注意加入-y --no-install-recommends,并且在安裝完成后執行rm -rf /var/lib/apt/lists/* && apt-get clean命令,可以有效減小鏡像的體積。
這樣安裝完cron服務(wù)后,crontab服務(wù)并不會(huì )自啟動(dòng),還需要一個(gè)docker-entrypoint.sh啟動(dòng)腳本來(lái)添加crontab的啟動(dòng)命令。
啟動(dòng)腳本
#!/bin/bash
set -x
# 保存環(huán)境變量,開(kāi)啟crontab服務(wù)
env >> /etc/default/locale
/etc/init.d/cron start
/etc/init.d/cron start用于啟動(dòng)crontab服務(wù),但這樣啟動(dòng)的crontab服務(wù)中配置的定時(shí)命令是沒(méi)有Dockerfile中設置的環(huán)境變量的。因此還需要在這之前執行env >> /etc/default/locale,這樣有Dockerfile中通過(guò)ENV設置的環(huán)境變量在crontab中就可以正常讀取了。
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP