Docker Volume覆盖文件权限

时间:2018-03-28 18:17:35

标签: linux docker docker-compose

我有一个Dockerfile,我带来了一些文件并更改了权限。 我还有一个docker-compose,它为nodemon创建一个卷来观看。我相信这些卷正在覆盖我设置的权限。当我删除应用程序的卷时,但我没有让服务器重新启动。当卷存在时,应用程序因权限而崩溃。我已经尝试过先创建音量,但也许我做错了。

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"]
RUN npm install --global nodemon
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 ["chmod", "777", "policy"]
RUN ls -al .
RUN npm -v
RUN node -v

最后通知我正在更改权限。

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

1 个答案:

答案 0 :(得分:0)

将卷装入docker容器时,里面的文件位于较低层,因此它们是隐藏的。

在您的情况下,隐藏Dockerfile中的Import-Csv -path C:\filename.csv | Select-Object *,@{Name='Date';Expression={'2018-03-28'}} | Select-Object Date, Name, ID | Export-Csv -path C:\Outfile.csv -NoTypeInformation 。其内容是来自主机的文件(/usr/local/app的父目录)。您应该在主机中设置权限。