linux – 如何使用非默认运行参数在AWS Elastic Beanstalk中运行
我有一个Docker容器,可以在我的本地开发机器上运行.我想将其移至AWS Elastic Beanstalk,但我遇到了一些麻烦.
我正在尝试使用s3fs将S3存储桶安装到我的容器中.我有Dockerfile: FROM tomcat:7.0 MAINTAINER me@example.com RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential libfuse-dev libcurl4-openssl-dev libxml++2.6-dev libssl-dev mime-support automake libtool wget tar # Add the java source ADD . /path/to/tomcat/webapps/ ADD run_docker.sh /root/run_docker.sh WORKDIR $CATALINA_HOME EXPOSE 8080 CMD ["/root/run_docker.sh"] 我通过运行run_docker.sh来安装s3fs,安装S3存储桶,并在创建映像后运行Tomcat服务器: #!/bin/bash #run_docker.sh wget https://github.com/s3fs-fuse/s3fs-fuse/archive/master.zip -O /usr/src/master.zip; cd /usr/src/; unzip /usr/src/master.zip; cd /usr/src/s3fs-fuse-master; autoreconf --install; CPPFLAGS=-I/usr/include/libxml2/ /usr/src/s3fs-fuse-master/configure; make; make install; cd $CATALINA_HOME; mkdir /opt/s3-files; s3fs my-bucket /opt/s3-files; catalina.sh run 当我使用以下命令构建并运行此Docker容器时: docker run --cap-add mknod --cap-add sys_admin --device=/dev/fuse -p 80:8080 -d username/mycontainer:latest 它运作良好.然而,当我删除–cap-add mknod –cap-add sys_admin –device = / dev / fuse时,s3fs无法挂载我的S3存储桶. 现在,我想在AWS Elastic Beanstalk上运行它,当我部署容器(并运行run_docker.sh)时,所有步骤都可以正常执行,除了run_docker.sh中的步骤s3fs my-bucket / opt / s3-files无法安装存储桶. 据推测,这是因为无论Elastic Beanstalk运行Docker容器,它都不会添加任何额外的标志,例如–cap-add mknod –cap-add sys_admin –device = / dev / fuse. 我的Dockerrun.aws.json文件如下所示: { "AWSEBDockerrunVersion": "1","Image": { "Name": "tomcat:7.0" },"Ports": [ { "ContainerPort": "8080" } ] } 是否可以向AWS EB Docker部署添加额外的docker run标志? 更新: 对于尝试使用@ Egor的答案的人来说,当EB配置设置为使用运行Docker 1.6.0的v1.4.0时,它会起作用.任何超过v1.4.0版本的内容都会失败.因此,为了使其工作,正常构建您的环境(这应该会给您一个失败的构建),然后使用运行Docker 1.6.0配置的v1.4.0重建它.应该这样做! 解决方法
如果您使用的是最新版本的aws docker stack(例如docker 1.7.1),则需要稍微修改上述答案.试试这个:
commands: 00001_add_privileged: cwd: /tmp command: 'sed -i "s/docker run -d/docker run --privileged -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh' 注意位置的变化&&运行脚本的名称 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 如何设置一个简单的DNS服务器来回答一个名称并转发
- linux – Crontab定义消失了
- 用于在固件中存储串行端口数据的数据结构
- Celery 基本使用
- linux – CentOS错误 – sudo:有效的uid不是0,sudo是否安装
- linux – 我需要发送具有多个启动选项的扩展DHCPOFFER?
- 如何在没有find的情况下在linux shell脚本中根据日期查找和
- BEA-141150 - An error occurred while preparing applicat
- linux – 如何在shell脚本中获取公共IP地址?
- linux – 使用bash脚本添加cronjob – 没有用于root的cront