【问题标题】:Docker /usr/src/app path on Mac OSMac OS 上的 Docker /usr/src/app 路径
【发布时间】:2018-05-15 17:43:01
【问题描述】:

我目前正在阅读使用 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/,是否应该在 local 中创建一个 app 目录以沿着这条路径前进?

【问题讨论】:

    标签: macos docker path


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

    【讨论】:

    • 但是轨道webapp 应该在哪里?它在不存在的路径中生成应用程序。
    • 您的应用程序(Dockerfile 等)应位于 second-appone-app 目录中。
    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多