对于Windows 10上的Docker,我如何在脚本中设置文件权限,以便在Docker处于';你不跑步吗?
我在Windows10上运行Docker19。我有一个docker compose文件和几个容器,其中一个是React应用程序对于Windows 10上的Docker,我如何在脚本中设置文件权限,以便在Docker处于';你不跑步吗?,docker,docker-compose,windows-10,file-permissions,Docker,Docker Compose,Windows 10,File Permissions,我在Windows10上运行Docker19。我有一个docker compose文件和几个容器,其中一个是React应用程序 version: '3' services: mysql: restart: always image: mysql:8.0 cap_add: - SYS_NICE # CAP_SYS_NICE environment: MYSQL_DATABASE: 'directory_data' # So
version: '3'
services:
mysql:
restart: always
image: mysql:8.0
cap_add:
- SYS_NICE # CAP_SYS_NICE
environment:
MYSQL_DATABASE: 'directory_data'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'root'
# You can use whatever password you like
MYSQL_PASSWORD: 'password'
# Password for root access
MYSQL_ROOT_PASSWORD: 'password'
ports:
- "3406:3306"
volumes:
- my-db:/var/lib/mysql
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
web:
restart: always
build: ./web
ports: # to access the container from outside
- "8000:8000"
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/gunicorn directory.wsgi:application --reload -w 2 -b :8000
volumes:
- ./web/:/app
depends_on:
- mysql
client:
build:
context: ./client
volumes:
- ./client:/app
ports:
- '3001:3000'
restart: always
container_name: web-app
environment:
- NODE_ENV=dockerdev
depends_on:
- web
stdin_open: true
command: /bin/bash /app/install_and_run.sh
apache:
restart: always
build: ./apache/
ports:
- "9090:80"
links:
- web:web
- client:client
volumes:
my-db:
客户端Dockerfile的结构如下
FROM node:10-alpine AS alpine
RUN apk update && apk add bash
RUN apk add dos2unix
# A directory within the virtualized Docker environment
# Becomes more relevant when using Docker Compose later
WORKDIR /my-app/
# Copies package.json and package-lock.json to Docker environment
COPY install_and_run.sh ./
# Installs all node packages
RUN npm install --force -g yarn
RUN dos2unix /my-app/install_and_run.sh
“install_and_run.sh”脚本如下所示
#!/bin/bash
cd /app
# install everythiing
yarn
# Run it
REACT_APP_PROXY=http://localhost:9090 npm start
当我运行“docker compose up”并退出时,我在文件系统上看到具有以下权限的文件(使用Cygwin)
然而,即使我以拥有所有权的用户身份登录,我似乎无法删除这些文件,我会遇到如下错误
rm: cannot remove 'client/node_modules/workbox-webpack-plugin/node_modules/.bin/webpack': Permission denied
rm: cannot remove 'client/node_modules/worker-farm/node_modules/.bin/errno': Permission denied
rm: cannot remove 'client/node_modules/write/node_modules/.bin/mkdirp': Permission denied
我想知道的是,我需要在Docker文件/脚本中做些什么来授予文件权限,以便在Docker停止或根本不在我的系统上时删除它们(作为我登录的用户)
rm: cannot remove 'client/node_modules/workbox-webpack-plugin/node_modules/.bin/webpack': Permission denied
rm: cannot remove 'client/node_modules/worker-farm/node_modules/.bin/errno': Permission denied
rm: cannot remove 'client/node_modules/write/node_modules/.bin/mkdirp': Permission denied