如何在docker容器上安装python
我创建了一个docker compose yml文件,用于在docker容器中运行cron作业 将在docker容器中运行的cron作业必须运行python脚本,并通过redis sentinel连接到mysql和redis Cron作业需要python,并且需要在docker容器中安装python依赖项esmysql和redis sentinel才能成功运行python脚本 这是我的docker编写的yml文件如何在docker容器上安装python,python,mysql,docker,docker-compose,redis-sentinel,Python,Mysql,Docker,Docker Compose,Redis Sentinel,我创建了一个docker compose yml文件,用于在docker容器中运行cron作业 将在docker容器中运行的cron作业必须运行python脚本,并通过redis sentinel连接到mysql和redis Cron作业需要python,并且需要在docker容器中安装python依赖项esmysql和redis sentinel才能成功运行python脚本 这是我的docker编写的yml文件 version: '3' services: cron-job: im
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文件后出现。如果需要,可以直接使用python映像,因为有基于它的版本 我认为解决您的请求的最佳方法是建立您自己的docker形象: 创建docker文件 Dockerfile 在本例中,您将需求存储在requirements.txt文件中 如果使用虚拟环境,可以使用pip freeze>Requirements.txt命令生成需求文件 或 然后,您可以将它推送到docker hub注册表中,或者直接从docker compose中构建并使用它 构建您的图像并与docker compose一起使用 第一路 您可以构建并将其推送到docker hub,您可以在此处找到更多信息: 那么您的docker编写将如下所示: docker-compose.yaml 第二条路 您可以在docker compose中使用Dockerfile: docker-compose.yaml
如果Dockerfile和docker-compose.yaml位于同一目录中,则可以使用build:。直接使用python映像而不是alpine可能会更好。您需要alpine吗?不,我不需要alpine,但是如果我使用python映像,mysql和redis依赖关系如何。如果您还想在docker中运行它们,mysql和redis将必须是单独的服务,它们都应该在同一docker compose文件中以共享同一网络。然后,您可能拥有@mikhail pashkovOk的答案中所述的requirements.txt中所需的所有依赖项,然后只需按照aswer中所述安装您的需求即可。但在这里,您仍然需要在单独的服务中运行mysql和redis,像上面提到的@fpietka一样,我需要安装的依赖项应该在requirement.txt文件中的单独行中。现在我已经通过运行pip install-no cache dir{mysql package name}{redis package name}完成了安装
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir {mysql package name} {redis package name}
version: '3'
services:
cron-job:
image: dockerhub-login/your-image-name:tag
...
version: '3'
services:
cron-job:
build: path/to/Dockerfile
...