我创建了一个docker-compose yml文件,以便在docker容器中运行cron-job。
要在docker容器中运行的cron-job必须运行 python 脚本,并通过Redis连接到 mysql 和 redis 哨兵。
Cron-job需要python和必需的python-dependencies(mysql和redis sentinel)安装在Docker容器中才能成功运行python脚本。
这是我的docker-compose yml文件
version: '3'
services:
cron-job:
image: alpine:3.10
command: crond -f -d 8
volumes:
- /Users/anshul/cron:/etc/crontabs/root:z
restart: unless-stopped
networks:
default:
external:
name: cnet
要在docker容器上安装python和必需的依赖项,我需要执行哪些更改,这将在运行此compose文件后出现。
答案 0 :(得分:1)
您可以直接使用python映像(如果需要使用alpine,则有基于它的版本)https://hub.docker.com/_/python 我认为解决您的请求的最佳方法是构建自己的docker映像:
Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
在此示例中,您将需求存储在requirements.txt
文件中。
可以使用pip freeze > requirements.txt
命令构建的需求文件(如果使用虚拟环境,则很有用)
或
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir {mysql package name} {redis package name}
然后您可以将其推送到docker hub注册表中,或者直接从docker-compose中构建并使用它
您可以构建并将其推送到docker hub(在此处可以找到更多信息:https://docs.docker.com/get-started/part3/)
然后您的docker组成将类似于:
docker-compose.yaml
version: '3'
services:
cron-job:
image: dockerhub-login/your-image-name:tag
...
第二路
您可以在docker-compose中使用Dockerfile:
docker-compose.yaml
version: '3'
services:
cron-job:
build: path/to/Dockerfile
...
如果Dockerfile
和docker-compose.yaml
在同一目录中,则可以使用build: .