我目前正在阅读使用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
以跟随此路径?
答案 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
- 工作目录中执行。