Docker 在同一容器上运行 "pip install" 和 "npm install" 相互覆盖
Docker runs of "pip install" and "npm install" on same container overwriting each other
在我的 docker 容器中,我尝试使用 pip 安装几个软件包,同时通过 npm 安装 Bower。然而,似乎无论是 pip 还是 npm 运行 首先,另一个 /usr/local/bin 中的内容都会被覆盖(具体来说,下面的 Docker 文件中缺少 gunicorn,或者如果我交换,则 Bower 会丢失我的 FROM..RUN
块的顺序)。
这是 Docker 的预期行为吗?如果是,我该如何将我的 pip 包和 Bower 安装到同一目录中,/usr/local/bin?
这是我的 Docker 文件:
FROM python:3.4.3
RUN mkdir /code
WORKDIR /code
ADD ./requirements/ /code/requirements/
RUN pip install -r /code/requirements/docker.txt
ADD ./ /code/
FROM node:0.12.7
RUN npm install bower
这是我的 docker-compose.yml 文件:
web:
restart: always
build: .
expose:
- "8000"
links:
- postgres:postgres
#-redis:redis
volumes:
- .:/code
env_file: .env
command: /usr/local/bin/gunicorn myapp.wsgi:application -w 2 -b :8000 --reload
webstatic:
restart: always
build: .
volumes:
- /usr/src/app/static
env_file: .env
command: bash -c "/code/manage.py bower install && /code/manage.py collectstatic --noinput"
nginx:
restart: always
#build: ./config/nginx
image: nginx
ports:
- "80:80"
volumes:
- /www/static
- config/nginx/conf.d:/etc/nginx/conf.d
volumes_from:
- webstatic
links:
- web:web
postgres:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
ports:
- "5432:5432"
更新: 我继续将其交叉post编辑为 docker-compose issue 因为不清楚是否存在实际错误或我的配置是否存在是个问题。我会保持两个 post 更新,但如果您知道发生了什么,请在任何一个中做 post。谢谢!
您不能在 Dockerfile 中使用多个 FROM
命令,也不能从 2 个不同的基础映像创建映像。因此,如果您需要节点和 python 在同一图像中,您可以将节点添加到 python 图像或将 python 添加到节点图像。
在我的 docker 容器中,我尝试使用 pip 安装几个软件包,同时通过 npm 安装 Bower。然而,似乎无论是 pip 还是 npm 运行 首先,另一个 /usr/local/bin 中的内容都会被覆盖(具体来说,下面的 Docker 文件中缺少 gunicorn,或者如果我交换,则 Bower 会丢失我的 FROM..RUN
块的顺序)。
这是 Docker 的预期行为吗?如果是,我该如何将我的 pip 包和 Bower 安装到同一目录中,/usr/local/bin?
这是我的 Docker 文件:
FROM python:3.4.3
RUN mkdir /code
WORKDIR /code
ADD ./requirements/ /code/requirements/
RUN pip install -r /code/requirements/docker.txt
ADD ./ /code/
FROM node:0.12.7
RUN npm install bower
这是我的 docker-compose.yml 文件:
web:
restart: always
build: .
expose:
- "8000"
links:
- postgres:postgres
#-redis:redis
volumes:
- .:/code
env_file: .env
command: /usr/local/bin/gunicorn myapp.wsgi:application -w 2 -b :8000 --reload
webstatic:
restart: always
build: .
volumes:
- /usr/src/app/static
env_file: .env
command: bash -c "/code/manage.py bower install && /code/manage.py collectstatic --noinput"
nginx:
restart: always
#build: ./config/nginx
image: nginx
ports:
- "80:80"
volumes:
- /www/static
- config/nginx/conf.d:/etc/nginx/conf.d
volumes_from:
- webstatic
links:
- web:web
postgres:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
ports:
- "5432:5432"
更新: 我继续将其交叉post编辑为 docker-compose issue 因为不清楚是否存在实际错误或我的配置是否存在是个问题。我会保持两个 post 更新,但如果您知道发生了什么,请在任何一个中做 post。谢谢!
您不能在 Dockerfile 中使用多个 FROM
命令,也不能从 2 个不同的基础映像创建映像。因此,如果您需要节点和 python 在同一图像中,您可以将节点添加到 python 图像或将 python 添加到节点图像。