Docker 使用 GitBash/Cmder - 路径问题

问题描述

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 - `成功`:

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 日志

$ 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 容器已创建但未运行...请参阅以下问题

$ 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 中解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)