这是目前我的目录设置方式。
.
|-src
|--producer
|---Dockerfile
|---requirements.txt
|---main.py
|--consumer
|---*same files as producer*
|-.env
| docker-compose.yml
这里是生产者Dockerfile(对于消费者,只需将生产者更改为消费者):
FROM python:3.7
COPY requirements.txt /opt/pip/requirements.txt
RUN pip install -r /opt/pip/requirements.txt
COPY . /app/
WORKDIR /app/src/producer
CMD python main.py
这是我的docker-compose设置。
version: '3'
services:
rabbit:
hostname: rabbit
image: rabbitmq:3-management
ports:
- "5673:15672"
- "5672:5672"
env_file:
- .env
producer:
build:
context: ./src/producer
dockerfile: Dockerfile
volumes:
- .:/app
depends_on:
- rabbit
env_file:
- .env
consumer:
build:
context: ./src/consumer
dockerfile: Dockerfile
volumes:
- .:/app
depends_on:
- rabbit
env_file:
- .env
正如您在Dockerfile中看到的那样,我不得不将工作目录更改为/app/src/[producer/consumer]
,因为每当我必须运行main.py python脚本时,我都会收到一个不存在的错误。根据我观察到的登录到特定生产者或消费者容器的bash的记录,似乎复制了根目录,而不是复制docker-compose.yml
中定义的子目录/上下文。
关于我做错了什么的任何线索吗? 我正在使用Windows计算机,如果这样做会导致任何问题。 我已经尝试过删除所有内容并从头开始构建方法,只是要确保罪魁祸首是没有缓存的容器/命令等。为了防万一,我什至没有重新启动Docker桌面。