草庐IT

amazon-web-services - 带有 Docker 和 EBS 卷的 EC2,在初始化期间将 EBS 卷安装在容器内

coder 2023-05-27 原文

我实际上试图用 Docker 实现一些目标,但我被卡住了,这是我的问题。

我的容器托管在 EC2 上,其中包含我的 Web 应用程序。我的 webapp 使用 JCR 存储库作为数据库,该存储库基本上是存储在您想要的位置的文件。所以每次我的网络应用程序启动时,如果存储库不存在,它会创建它,否则它会使用现有的。

我当前的 docker 文件看起来像这样 https://gist.github.com/agonist/7cab7358379e9dd6e812 ./chameleon.sh start 只是启动我的 webapp。在这个应用程序中,我配置了存储库文件的位置。

现在我创建了一个 EBS 卷,附加并安装在我的 EC2 实例中。此卷将专用于存储存储库。所以基本上在我的应用程序中,我将存储库路径配置为 /mnt/repository/ ,其中存储库是包含由我的 Web 应用程序创建的存储库文件的目录。 但是我不知道如何在 Dockefile 中的 ./chameleon.sh start 之前将此卷安装到我的容器中。正如我在研究中看到的那样

docker run -v /mnt/repository:/mnt/repository aws_beanstalk/current-app

不能从 Dockefile 执行。

我还发现了有关与另一个容器共享一个卷的仅数据容器的内容,但如果我必须运行,仍然存在同样的问题

sudo docker run -d --volumes-from dbdata

我的容器启动后

最佳答案

短版:这不是答案,只是对它的一点帮助,说明 Docker 的工作原理。

不直接相关,但您的 Dockerfile 应该如下所示:

FROM dockerfile/java:oracle-java8

# Expose the port 9000
EXPOSE 9000

# Volumes
VOLUME /root/wisdom/logs
VOLUME /root/wisdom/application

# Change workdir.
WORKDIR /root/wisdom

RUN touch /root/wisdom.log

# Add the wisdom distribution
ADD . /root/wisdom

# For easier handling, we dump the log, so `docker logs containerId` displays
# the log.
CMD ./chameleon.sh start && tail -F logs/wisdom.log

这样,您在 ADD 之前的所有图层都会被缓存。而以前,如果您更改目录中的任何内容,则会重新创建所有图层。 您的 chameleon.sh 应该是本地目录上的 chmod,而不是运行时。 ADD 保存权限。 stop 不是必需的,因为当您启动容器时,您没有运行任何进程。

-v 确实不能从 Dockerfile 执行。这是意料之中的,因为 Dockerfile 是可移植的。如果您将其绑定(bind)到本地计算机,那么您将失去此功能。

当您执行 docker run -v/mnt/repository:/mnt/repository aws_beanstalk/current-app 时,挂载在执行命令之前完成。您可以通过运行 docker run -v/mnt/repository:/mnt/repository aws_beanstalk/current-app mount

来仔细检查

当使用--volumes-from时,也是一样的。卷在执行命令之前挂载。

那为什么会失败呢?我不确定,检查 mount 结果并使用您的 EBS 进行一些手动测试会很有趣。我有一些容器安装 EBS 卷,它工作正常。

关于amazon-web-services - 带有 Docker 和 EBS 卷的 EC2,在初始化期间将 EBS 卷安装在容器内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041545/

有关amazon-web-services - 带有 Docker 和 EBS 卷的 EC2,在初始化期间将 EBS 卷安装在容器内的更多相关文章

  1. ruby-on-rails - 未初始化的常量 Psych::Syck (NameError) - 2

    在我的gem中,我需要yaml并且在我的本地计算机上运行良好。但是在将我的gem推送到ruby​​gems.org之后,当我尝试使用我的gem时,我收到一条错误消息=>"uninitializedconstantPsych::Syck(NameError)"谁能帮我解决这个问题?附言RubyVersion=>ruby1.9.2,GemVersion=>1.6.2,Bundlerversion=>1.0.15 最佳答案 经过几个小时的研究,我发现=>“YAML使用未维护的Syck库,而Psych使用现代的LibYAML”因此,为了解决

  2. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  3. ruby-on-rails - 未在 Ruby 中初始化的对象 - 2

    我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调

  4. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

  5. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  6. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  7. ruby - 为什么当我调用类的实例方法时,初始化不显示为方法? - 2

    我正在写一篇关于在Ruby中几乎一切都是对象的博客文章,我试图通过以下示例来展示这一点:classCoolBeansattr_accessor:beansdefinitialize@bean=[]enddefcount_beans@beans.countendend所以从类中我们可以看出它有4个方法(当然,除非我错了):它可以在创建新实例时初始化一个默认的空bean数组它可以计算它有多少个bean它可以读取它有多少个bean(通过attr_accessor)它可以向空数组写入(或添加)更多bean(也通过attr_accessor)但是,当我询问类本身它有哪些实例方法时,我没有看到默认

  8. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  9. ruby-on-rails - 如何将大于 5GB 的文件上传到 Amazon S3? - 2

    我目前正在使用带有Carrierwavegem的Rails3.2将文件上传到AmazonS3。现在我需要能够处理用户提交的大于5GB的文件,同时仍然使用Carrierwavegem。Carrierwave或Fog是否有任何其他gem或分支可以处理5GB以上的文件上传到S3?编辑:我不想重写一个完整的Rails上传解决方案,所以像这样的链接没有帮助:https://gist.github.com/908875. 最佳答案 我想出了如何做到这一点,并且现在可以正常工作了。在正确的config/environment文件中,添加以下内容以

  10. ruby-on-rails - 将 Amazon Simple Notification service SNS 与 ruby​​ 结合使用 - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要从基于ruby​​的应用程序使用AmazonSimpleNotificationService,但不知道从哪里开始。您对从哪里开始有什么建议吗?

随机推荐