这是我的Dockerfile
# Pull node docker image
FROM python:3.7-buster
RUN mkdir -p /home/deployment && chown -R root:root /home/deployment
WORKDIR /home/deployment
COPY weldTrace-linux ./
COPY verified.json ./
COPY flaskapp ./
我的docker-compose.yml
version: "1.0"
services:
mongo:
image: mongo:4.4.14
command: mongod --port 27018
ports:
- 27018:27018
volumes:
- ${DBPATH}:/data/db
web:
build: .
ports:
- 3000:3000
command: ./app-linux
depends_on:
- mongo
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ${MEDIAPATH}:/data/media
flask:
image: python:3.7-buster
ports:
- 5000:5000
# volumes:
# - ${PIPPATH}:/usr/local/lib/python3.7/site-packages
# - ./flaskapp:/home/deployment/flaskapp
# working_dir: /home/deployment/flaskapp
command: flask run
# depends_on:
# - requirements
# requirements:
# image: python:3.7-buster
# volumes:
# - ${PIPPATH}:/usr/local/lib/python3.7/site-packages
# - .:/home/deployment/flaskapp
# working_dir: /home/deployment/flaskapp
# command: pip install -r requirements.txt
volumes:
data:
external: true
pip37:
external: true
和我的PIPPATH=D:Programmingpip37
当我执行docker-compose up
时,我最终得到以下错误
后台进程的错误响应:未能创建填充程序:OCI运行时创建失败:container_linux.go:380:启动容器进程导致:执行官:";烧瓶":在$PATH中找不到可执行文件:未知
关于如何解决这个问题有什么想法/建议吗?由于mongo中的Dockerfile库,我无法使用RUN命令安装任何python、pip及其包。
正如其他人所指出的,python:3.7-buster
映像没有安装flask
。因此,在执行flask run
命令之前,需要安装flask
。对于您的设置,这可以通过以下两种方式之一完成:
选项1:
由于Dockerfile
中的基本映像也是python:3.7-buster
,因此可以添加安装flask
的指令,就像Kesha建议的那样。Dockerfile
的精简/定制版本如下:
FROM python:3.7-buster
RUN mkdir -p /home/deployment && chown -R root:root /home/deployment
RUN pip install flask
WORKDIR /home/deployment
COPY app.py ./
然后在docker-compose.yml
中,为服务web
构建的图像可以被重新用于服务flask
。精简组成文件如下:
version: "3.3"
services:
web:
build: .
image: flaskapp:latest
ports:
- 3000:3000
command: echo "Service 'web' exiting.."
flask:
image: flaskapp:latest
ports:
- 5000:5000
command: flask run --host=0.0.0.0
depends_on:
- web
flask run
命令执行时没有任何错误,因为flask
已经安装到自定义docker镜像中
选项2:
继续使用python:3.7-buster
作为服务flask
的映像。在这种情况下,在启动服务之后,需要在flask run
命令之前执行pip install flask
命令。修改后的组成文件如下:
version: "3.3"
services:
web:
build: .
image: flaskapp:latest
ports:
- 3000:3000
command: echo "Service 'web' exiting.."
flask:
image: python:3.7-buster
ports:
- 5000:5000
volumes:
- ./app.py:/home/deployment/app.py
working_dir: /home/deployment
command:
- /bin/sh
- -c
- |
pip install flask
flask run --host=0.0.0.0
您需要在dockerfile:中安装Flask
RUN pip install Flask