Mac OS上的Docker / usr / src / app路径

时间:2018-05-15 17:43:02

标签: macos docker path

我目前正在阅读使用Docker,Kubernetes和ECS部署Rails。在本书中,来自Dockerhub的Rails图像用于创建新的应用程序。运行以下命令后,将创建Rails应用程序。

docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w / usr/src/app \
rails rails new --skip-bundle --api --database postgresql webapp

但是,Docker需要此路径/usr/src/app,但这仅适用于Windows。在Mac OS中,如果在/usr/local/中创建app目录,则该文件夹为local以跟随此路径?

1 个答案:

答案 0 :(得分:1)

Docker中的内容与主机系统上发生的事情完全不同。你应该保留现在的"$PWD":/usr/src/app,因为教程肯定会基于那条路径。

有关$ PWD的说明中的一个字

如果直接指定路径,它总是更容易阅读并且更加一致。 这意味着如果你的项目有一个安装了所有rails应用程序的目录,你最好写这样的东西:

[..] -v ./ruby-app-directory:/usr/src/app [..]

[..] -v .:/usr/src/app [..]

例如:

$ docker run -it --rm --user "$(id -u):$(id -g)" -v .:/usr/src/app -w / usr/src/app \
rails rails new --skip-bundle --api --database postgresql webapp

而不是将其留给变量。

示例

应用程序树:

root
  - one-app
    + some.sh
    + Dockerfile
  - second-app
    + some.rails
    + Dockerfile

使用上面的应用程序树配置,您可以像这样使用它:

$ docker run -it --rm --user "$(id -u):$(id -g)" -v ./second-app:/usr/src/app -w / usr/src/app \
rails rails new --skip-bundle --api --database postgresql webapp

并且./second-app内的所有内容都将放在/usr/src/app location 中的容器内(/ usr / src / app作为另一个参数设置的工作目录)这样您在docker run命令末尾指定的命令将在/usr/src/app - 工作目录中执行。