【发布时间】:2017-08-25 06:42:33
【问题描述】:
我尝试使用 Yarn 设置命令来创建目录、构建我的 Docker 映像,然后启动 docker-compose up。
我在package.json 中添加了一个start 脚本来执行一个shell 脚本:
"scripts": {
"start": "./start-docker.sh",
...
}
这是start-docker.sh:
#!/bin/bash
mkdir -p volumes/mysql volumes/wordpress
docker-compose build
docker-compose up
一开始没有用,因为我的容器无权访问创建的目录。
然后我在创建目录后添加了这一行,以便为容器提供完全权限:
sudo chmod -R 777 volumes
但是正如你所看到的,这个命令需要使用 sudo 来执行。这意味着执行yarn start 命令会要求输入密码,这是我不想要的。
我摆脱了 shell 脚本,只使用了 yarn 脚本:
"scripts": {
"prestart": "mkdir -p volumes/mysql volumes/wordpress && docker-compose build",
"start": "docker-compose up",
...
}
令人惊讶的是它起作用了,但我不明白为什么......你们有什么想法吗?
【问题讨论】:
-
一旦目录具有权限 777,它就会保留此权限。您确定每次都重新创建所有内容吗?
-
不,它不是每次都创建的,但我需要设置一次权限才能使其工作
-
这看起来像是用户的问题。
yarn创建目录和运行容器时,运行流畅,但是当目录由yarn创建,并通过脚本运行时,用户发生了变化。在适当的时候使用whoami来验证这一点。 -
@Ayushya 它将在相同的用户下运行,具有相同的权限。如果您有兴趣,我在回答中解释了发生的事情
标签: node.js bash docker npm yarnpkg