Docker-在生成可执行文件时组成EACCESS错误

时间:2018-03-27 00:15:26

标签: node.js linux docker docker-compose

我有一个Dockerfile,我带来了一些文件和chmod一些东西。它是一个产生可执行文件的节点服务器。

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --no-install-recommends curl sudo
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
RUN apt-get install -y nodejs && \
apt-get install --yes build-essential
RUN apt-get install --yes npm

#VOLUME "/usr/local/app"

# Set up C++ dev env
RUN apt-get update && \
   apt-get dist-upgrade -y && \
   apt-get install gcc-multilib g++-multilib cmake wget -y  && \
   apt-get clean autoclean && \
   apt-get autoremove -y
   #wget -O /tmp/conan.deb -L https://github.com/conan-io/conan/releases/download/0.25.1/conan-ubuntu-64_0_25_1.deb && \
   #dpkg -i /tmp/conan.deb

#ADD ./scripts/cmake-build.sh /build.sh
#RUN chmod +x /build.sh
#RUN /build.sh


RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
RUN apt-get install -y nodejs sudo


RUN mkdir -p /usr/local/app
WORKDIR /usr/local/app
COPY package.json /usr/local/app
RUN ["npm", "install"]
COPY . .


RUN echo "/usr/local/app/dm" > /etc/ld.so.conf.d/mythrift.conf
RUN echo "/usr/lib/x86_64-linux-gnu" >> /etc/ld.so.conf.d/mythrift.conf
RUN echo "/usr/local/lib64" >> /etc/ld.so.conf.d/mythrift.conf
RUN ldconfig

EXPOSE 9090
RUN chmod +x dm/dm3
RUN ldd dm/dm3
RUN ["chmod", "+x", "dm/dm3"]
RUN ["chmod", "777", "policy"]
RUN ls -al .
CMD ["nodejs", "app.js"]

它工作正常但是当我使用docker-compose在docker中有一个autoreload dev环境时,我在生成可执行进程时会收到EACCES错误。

version: '3'
services:
  web:
    build: .
    command: npm run start
    volumes:
      - .:/usr/local/app/
      - /usr/app/node_modules
    ports:
      - "3000:3000"

我正在使用nodemon在更改时重新启动服务器,因此compose中的卷。愿意再次启动工作流程。

1 个答案:

答案 0 :(得分:1)

我认为你的问题是你编写docker-compose.yml文件的方法。

  1. 我认为线路命令并不是必需的,因为你 如何在Dockerfile中启动程序。
  2. 你可以试试这行吗?
  3. 
    
    version: '3'
    services:
      web:
        build: 
          context: ./
          dockerfile: Dockerfile    
        volumes:
          - .:/usr/local/app/
          - /usr/app/node_modules
        ports:
          - "3000:3000"
    
    
    

    否则,我认为卷属性不共享/ usr / app / node_modules。我认为这是不好的做法。你可以运行" npm install"在Dockerfile中

    我希望你能理解我=)