【发布时间】:2021-04-15 18:38:56
【问题描述】:
Docker 终端命令
尝试休闲 docker 教程 [https://docs.docker.com/get-started/06_bind_mounts/][1]docker run -dp 3000:3000 -w /app -v "$(pwd):/app" node:12-alpine sh -c "yarn install && yarn run dev"
我对上面的代码行有疑问。我在 Cmder、GitBash 和 Windows 10 PowerShell 终端中运行这一行。
控制台 1 - Cmder - 错误:
docker: Error response from daemon: create $(pwd): "$(pwd)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
控制台 2 - GitBash - `错误`:
docker: Error response from daemon: the working directory 'C:/Program Files/Git/app' is invalid, it needs to be an absolute path.
See 'docker run --help'.
可能的原因:
https://github.com/docker/cli/issues/2204
How to stop MinGW and MSYS from mangling path names given at the command line
控制台 3 - Windows PowerShell - `SUCCESS`:
df1ad0a4f71016f7832b6d9d02f963f33cc2cc8d5740e1013561287d875fb5de
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df1ad0a4f710 node:12-alpine "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3000->3000/tcp exciting_liskov
37d12fa854d7 mysql:5.7 "docker-entrypoint.s…" 3 hours ago Up 3 hours 3306/tcp, 33060/tcp admiring_faraday
23803e6325db docker/getting-started "/docker-entrypoint.…" 13 hours ago Up 13 hours 0.0.0.0:80->80/tcp boring_banach
$ 码头工人日志
$ docker
df1ad0a4f71016f7832b6d9d02f963f33cc2cc8d5740e1013561287d875fb5de
yarn install v1.22.5
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.52s.
yarn run v1.22.5
$ nodemon src/index.js
[nodemon] 1.19.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching dir(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
Using sqlite database at /etc/todos/todo.db
Listening on port 3000
PS C:\WEB APPS\app\app>
之前有人让它在 GitBash 或 Cmder 中工作,还是这是我的 Env 问题?猜测你们中的大多数人会在 Mack OS 或 Linux 发行版上运行它。也许 vegrant + docker 是要走的路?您在 Windows 上的设置是什么?
返回控制台 2 - GitBash - 尝试解决可能的路径问题:
因此,解决上述问题,我修改了添加附加“/”(How to stop MinGW and MSYS from mangling path names given at the command line)的行
docker run -dp 3000:3000 -w //app -v "$(pwd)/app" node:12-alpine sh -c "yarn install && yarn run dev"
cfde24fc30e8a8d3e83cade4a00ee318e37ced1d90aa831f0d56b9dc7148be22
现在 docker 容器已创建但未运行...请参阅以下问题
$ 码头工人日志
cfde24fc30e8a8d3e83cade4a00ee318e37ced1d90aa831f0d56b9dc7148be22
yarn install v1.22.5
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 0.04s.
yarn run v1.22.5
error Couldn't find a package.json file in "/app"
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
现在我们有 ... 错误 Couldn't find a package.json file in "/app" 有人在 gitbash 中解决问题吗?
【问题讨论】:
-
看起来
docker run命令正在尝试在当前目录的内容上运行 Node...installing Node locally 会比尝试将 Docker 插入到组合中更容易吗?
标签: docker powershell windows-10 git-bash cmder