Docker /usr/src/app path on Mac OS



我目前正在阅读 Deploy Rails with Docker、Kubernetes 和 ECS。在书中,来自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/是否应该在local中创建一个app目录以遵循此路径?

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位置(将/usr/src/app 作为由另一个参数设置的工作目录(,以便您在docker run命令末尾指定的命令将在/usr/src/app- 工作目录中执行。

最新更新