如何在 docker 容器上安装 python

How to install python on a docker container

我已经创建了一个 docker-compose yml 文件到 运行 一个 docker 容器中的 cron-job。

运行 在 docker 容器内的 cron-job 必须 运行 一个 python 脚本并连接通过redis-sentinel 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 和所需的依赖项,这些依赖项将在 运行 生成此组合文件后出现。

可以直接使用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 集线器注册表中,或者直接从您的 docker-compose

构建和使用它

构建您的图像并与 docker compose

一起使用 第一种方式

您可以构建并将其推送到 docker 中心(在这里您可以找到更多信息: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: .