docker-compose - Dockerfile 找不到我的文件退出代码 1 Dockerfile 在同一个目录中找不到文件
问题描述
这是我第一次使用 docker,我正在研究这个问题两天,这会让我很高兴找到解决方案。
我正在使用“docker-compose up”运行 docker-compose.yml 文件:
version: '3.3'
services:
base:
networks:
- brain_storm-network
volumes:
- brain_storm-storage:/usr/src/brain_storm
build: "./brain_storm"
data_base:
image: mongo
volumes:
- brain_storm-storage:/usr/src/brain_storm
networks:
- brain_storm-network
ports:
- '27017:27017'
api:
build: "./brain_storm/api"
volumes:
- brain_storm-storage:/usr/src/brain_storm
networks:
- brain_storm-network
ports:
- 5000:5000
depends_on:
- data_base
- base
restart: on-failure
./brain_storm 中的基本 Dockerfile 执行以下操作:
FROM brain_storm-base:latest
RUN mkdir -p /usr/src/brain_storm/brain_storm
ADD . /usr/src/brain_storm/brain_storm
以及在 Brain_storm/api 中运行 Dockerfile 时
FROM brain_storm-base:latest
CMD cd /usr/src/brain_storm \
&& python -m brain_storm.api run-server -h 0.0.0.0 -p 5000 -d mongodb://0.0.0.0:27017
我收到此错误:
Brain_storm_api_1 以代码 1 api_1 退出 | /usr/local/bin/python:查找“brain_storm.api”的模块规范时出错(ModuleNotFoundError:没有名为“brain_storm”的模块)
pwd 说运行基本 Dockerfile 时我在“/”而不是当前目录中,所以这可能是问题所在,但我如何在不去 Dockerfile 中的 /home/user/brain_storm 的情况下解决它,因为我想保持brain_storm文件夹的位置一般。
如何让 Dockerfile 从当前目录(Dockerfile 文件所在的位置)查看并获取文件?
解决方案
您可能应该WORKDIR
在两个 Dockerfile 中定义命令。该WORKDIR
命令用于在任何给定时间定义 Docker 容器的工作目录。任何RUN
, CMD
, ADD
, COPY
, 或ENTRYPOINT
命令都将在指定的工作目录中执行。:
根据:
FROM brain_storm-base:latest
WORKDIR /usr/src/brain_storm
COPY . .
接口:
FROM brain_storm-base:latest
WORKDIR /usr/src/brain_storm
CMD python -m brain_storm.api run-server -h 0.0.0.0 -p 5000 -d mongodb://0.0.0.0:27017
推荐阅读
- php - Laravel 8 中的自定义 DatabaseSessionHandler
- python-3.x - 我想在 python 中打印斐波那契数列的 fib(5) 以找到否。fib(0) 的次数?错误“函数”对象没有属性“_args_counter”
- java - 试图在jsp中显示图像(保存在mysql中的图像url和图像存储在一个文件夹中)但它不起作用
- f# - F# - 从选项类型函数中获取元组的 fst 元素
- git - git无法将我的本地分支与远程合并
- kotlin - 类型推断失败。预期类型不匹配
- java - 答案 = in.nextLine().trim().toLowerCase(); 不知道怎么了
- swift - 外观更改时更新小部件
- javascript - Filepond:上传带有缩略图的图像
- c# - 如何在机器人瀑布对话框模型中将值从 StepContext 传递到 Promptvalidatorcontext?