2015-08-16 45 views
0

在我的码头容器中,我试图用pip安装几个包,并通过npm安装Bower。但似乎无论哪个pip或npm先运行,另一个在/ usr/local/bin中的内容都被覆盖(具体来说,下面的Dockerfile缺少gunicorn,或者如果我交换我的FROM..RUN块的顺序,Bower就会丢失)。Docker在同一个容器上运行“pip install”和“npm install”互相覆盖

这是Docker的预期行为,如果是这样,我该如何将我的pip包和Bower安装到同一个目录/ usr/local/bin?

这里是我的Dockerfile:

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 

这里是我的搬运工,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" 

更新:我继续和跨张贴这是一个docker-compose issue因为如果现在还不清楚有一个实际的错误,或者如果我的配置是一个问题。我会保持这两个帖子都更新,但如果您对发生的事情有所了解,也可以发帖。谢谢!

+1

这是一个错字,还是在ADD中有一个空格。/requirements/code/requirements /'? – user2915097

+0

Typo;接得好。我会更新我的帖子。我想知道为什么PIP继续与每个“构建”安装。不幸的是,与npm/pip相同的问题。 –

回答

2

您不能在Dockerfile中使用多个FROM命令,并且无法从2个不同的基础映像创建映像。所以,如果你需要在同一个图像中的节点和Python,你可以添加节点到Python图像或添加Python到节点图像。

+0

感谢您的信息。我认为我现在对Docker和Compose有了更好的理解。您的帖子也会将我带到这个[其他(已关闭)问题](https://github.com/docker/docker/issues/3378),其他人有相同的使用案例,而其他人则提出了一些解决方法。 –