【问题标题】:where files are created in docker run? local machine or docker image在 docker run 中创建的文件在哪里?本地机器或 docker 镜像
【发布时间】:2017-05-24 15:38:19
【问题描述】:

这是我在 stackoverflow 中的第一个问题 :)) 当我按照链接https://docs.docker.com/compose/rails/#define-the-project 使用docker 启动我的rails 应用程序时。

FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs    <- this install dependencies into docker container
RUN mkdir /myapp   <- this create myapp folder into docker container
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp       <- my confused there

如果命令“RUN bundle install”与“RUN mkdir /myapp”相同,那么我的项目骨架文件将在 docker 容器而不是本地机器中创建。但为什么需要最后一个命令“ADD ./myapp”?因为该命令将本地机器中的当前文件夹添加到 docker 容器中的 /myapp 文件夹中。

谢谢。

【问题讨论】:

    标签: ruby-on-rails docker dockerfile


    【解决方案1】:

    ADD 命令将当前主机目录的内容(仅新文件)复制到容器的/myapp 目录中。

    1. RUN mkdir /myapp:在容器内创建一个空的/myapp目录。

    2. WORKDIR /myapp:将/myapp设置为容器内的工作目录。

    3. ADD Gemfile /myapp/GemfileADD Gemfile.lock /myapp/Gemfile.lock :将您的主机 GemfileGemfile.lock 添加到 /myapp/

    4. RUN bundle install:安装Gemfile的依赖项

    5. ADD . /myapp:将您的应用程序代码添加到/myapp 目录(仅限新文件)。

    如果您需要有关此命令的更多信息,请查看ADD 命令的 Dockerfile 参考:https://docs.docker.com/engine/reference/builder/#add

    希望这会有所帮助,祝你好运,欢迎来到 SO!

    【讨论】:

    • 感谢您的回答。但是您并没有关注我的困惑:如果我的应用程序骨架文件是在“RUN bundle install”之后在docker容器中创建的,那么为什么需要通过“ADD ./myapp”再次将它们添加到容器中?
    • 如果你的当前目录下没有新文件,并且所有文件都是在RUN bundle install之后创建的,那么简单的ADD命令什么都不做。你可以删除它。
    • 请验证答案是否对您有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多