如何在Docker容器上安装python

时间:2020-09-02 12:42:55

标签: python mysql docker docker-compose redis-sentinel

我创建了一个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文件后出现。

1 个答案:

答案 0 :(得分:1)

您可以直接使用python映像(如果需要使用alpine,则有基于它的版本)https://hub.docker.com/_/python 我认为解决您的请求的最佳方法是构建自己的docker映像:

创建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 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
    ...

如果Dockerfiledocker-compose.yaml在同一目录中,则可以使用build: .