【发布时间】:2021-09-05 08:12:43
【问题描述】:
根据我是通过docker run -i -t <container> bash 还是docker-compose run <container> bash 打开 bash shell,我遇到了容器内容的差异,但我不知道/不明白这怎么可能。
为了帮助解释,请查看我终端上的this 截图。在这两种情况下,我都在运行名为blaze 的图像,它是从我的代码中的Dockerfile 构建的。构建过程中的步骤之一是创建一个名为venv 的virutalenv,但是当我通过docker-compose 打开一个bash shell 时,这个virtualenv 似乎并不存在,不像我运行docker run ... 时那样。
我对使用 Docker 设置自己的构建相对较新,但如果它们都引用相同的图像,那么 bash shell 中 ls 的输出肯定是一样的吗?我将非常感谢任何可以解释这里到底出了什么问题的资源的帮助或指导......
另外一点,运行 docker images 表明两个命令必须使用相同的图像...
提前致谢!
这是我的Dockerfile:
FROM blaze-base-image:latest
# add an URL that PIP automatically searches (e.g., Azure Artifact Store URL)
ARG INDEX_URL
ENV PIP_EXTRA_INDEX_URL=$INDEX_URL
# Copy source code to docker image
RUN mkdir /opt/app
COPY . /opt/app
RUN ls /opt/app
# Install Blaze pip dependencies
WORKDIR /opt/app
RUN python3.7 -m venv /opt/app/venv
RUN /opt/app/venv/bin/python -m pip install --upgrade pip
RUN /opt/app/venv/bin/python -m pip install keyring artifacts-keyring
RUN touch /opt/app/venv/pip.conf
RUN echo $'[global]\nextra-index-url=https://www.index.com' > /opt/app/venv/pip.conf
RUN /opt/app/venv/bin/python -m pip install -r /opt/app/requirements.txt
RUN /opt/app/venv/bin/python -m spacy download en_core_web_sm
# Comment
CMD ["echo", "Container build complete"]
这是我的docker-compose.yml:
version: '3'
services:
blaze:
build: .
image: blaze
volumes:
- .:/opt/app
【问题讨论】:
标签: python bash docker docker-compose virtualenv