我目前正在阅读 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
- 工作目录中执行。