Tag: shell

使用dockerfile将环境variables传递给java类

我正在尝试将环境variables传递给使用docker运行java类的shell脚本。 我收到错误,不能执行它。 test.sh #!/bin/bash java -cp s3fileprocess-1.0.1.jar com.wt.test.S3FileProcess $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY $bucketName $keyName $uploadFileName $downloadFile Dockerfile: FROM java:8 ADD . /home/test WORKDIR /home/test RUN chmod +x ./test.sh ENTRYPOINT ./test.sh build立形象: docker build -t test . 运行容器: docker run -e AWS_ACCESS_KEY_ID=A***** \ -e AWS_SECRET_ACCESS_KEY=w***** \ -e bucketName=I***** \ -e keyName=index.php \ -e uploadFileName=/home/test/index.php \ -e downloadFile=/home/index.php \ […]

Rancher OS:在一个容器中生成数据,并在另一个容器中设置为环境variables

我想我有一个非常具体的问题。 多个docker集装箱已经在栈中运行。 现在,这些容器中的两个需要通过安全连接相互交谈。 对于这个容器A能够生成容器B应该设置的令牌 现在我的问题是:如何启动容器A,等待它完全加载(需要花费一些时间才能完全加载的PHP框架),然后生成令牌,将容器B的令牌设置为环境variables,然后启动容器B. 或者有没有更好的方法来解决这个问题? 非常感谢

Docker容器中的Bash有怪异的行为:“提示跳转”

最近遇到了一个关于我的docker-shell的问题,如下所示。 任何人有什么线索怎么回事? 我从来没有这个问题,甚至不知道什么谷歌… 它只发生在docker集装箱,我的本地shell似乎很好。 在容器中切换shell不成功。 脚本进入docker似乎很好; 尝试正常的命令,没有成功。 任何帮助深表感谢! 谢谢

如何使用Shell脚本重新启动Docker服务

我有在Docker容器中运行的Node服务 由于以下exception服务会在一段时间后停止。 events.js:141 throw er; // Unhandled 'error' event Error: read ECONNRESET at exports._errnoException (util.js:870:11) at TLSWrap.onread (net.js:544:26) 我不知道为什么这个例外即将到来。 我正在寻找可以重新启动服务的工作。 我正在使用shell文件来运行这些服务,所以有什么我可以添加在shell文件,可以重新启动这个停止的服务。 以下是我的shell文件的示例: #!/bin/bash ORGANISATION="$1" SERVICE_NAME="$2" VERSION="$3" ENVIRONMENT="$4" INTERNAL_PORT_NUMBER="$5" EXTERNAL_PORT_NUMBER="$6" NETWORK="$7" docker build -t ${ORGANISATION}/${SERVICE_NAME}:${VERSION} –build-arg PORT=${INTERNAL_PORT_NUMBER} –build-arg ENVIRONMENT=${ENVIRONMENT} –no-cache . docker stop ${SERVICE_NAME} docker rm ${SERVICE_NAME} sudo npm install sudo npm install -g express docker […]

有没有办法从github上下载一个项目,并将其放置在maven构build的项目文件夹中?

我正在研究项目结构如下所示的应用程序 采样父 >Sample >Sample packaging Sample-Parent是父项目,依次取决于Sample和Sample Packaging模块。 示例模块包含业务代码。 样品包装模块包含dockerize Sample Module的脚本。 项目中的所有应用程序都遵循这个标准。 我们计划提供一个种子项目,为这个标准的项目结构提供一个框架,以便任何开发者都可以开始编写他的业务代码,让他的应用程序正常运行,而不必担心种子项目提供的任何configuration。 我们正在寻找开发人员不必编写任何脚本来dockerize他的项目。 所以问题是我们是否可以有一个示例打包项目,它具有所有必要的脚本来dockerize任何项目,驻留在github作为模板项目的占位符,如果一个新的开发人员想dockerize他的项目说Sample-Dev1,他做了一个maven build,它应该执行以下步骤1.从github下载样本打包项目。 把它放在Sample-Dev1项目中。 3.使用sample-dev1replacesample-packaging项目中的所有占位符,以便dockerizes sample-dev1 这将是一个很大的增值,因为开发人员不需要编写任何dockerizing脚本。 哪种方法会更好? 任何Maven插件,为我做这个? 或者我应该看看Python脚本来做到这一点? 还是有更好的办法? 任何帮助,将不胜感激。

Bash脚本入口点(PID = 1)杀死`尾巴`subprocess只有当一个假陷阱(没有什么)在那里

我正在面对一个奇怪的行为,我的Bash脚本,我有这个Bash脚本运行与PID 1 (这是一个Docker容器的entrypoint ,如果你不熟悉Docker,我假设你可以忽略这个信息)。 当我运行下面的脚本时, SIGTERM很快终止一切,一切似乎都没有问题(请记住, sshd服务不存在!我的整个系统只启动这个只运行tail脚本,但直到现在它不是问题)。 #!/bin/bash trap "pkill sshd" SIGTERM export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi 当我删除该trap时,问题出现了。 现在我的系统挂起,似乎是因为尾巴直到运行,并没有因某种原因而结束。 (如果你熟悉Docker,Docker会等待10秒,然后杀死容器,因为它没有响应SIGTERM ,如果你不熟悉Docker,请忽略此信息)。 #!/bin/bash export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi […]

Docker和Zeppelin操作系统的特权

我已经将Zeppelin应用程序docker化了。 现在我想看看docker和zeppelin各自拥有哪些操作系统特权。 我已经尝试了如下所示的一些命令,但是它没有给我预期的输出。 docker service ls docker service inspect –pretty redis 另外,列出Docker中可能可用的所有服务的命令是什么?

通过脚本将dockerfile中的环境variables传递给dockerfile

我开始使用Docker,并使用Flask制作web服务。 为了连接到数据库,我需要告诉服务连接的凭据。 我不想把variables直接放在Dockerfile上,或者放在代码上。 我想通过在Dockerfile上调用的shell脚本通过在构build时设置的环境variables传递它们。 这里的事情是我已经尝试使用CMD,RUN和ENTRYPOINT来实现这一目标而没有成功。 这是我的Dockerfile的最后一个版本: FROM python:2.7-slim WORKDIR /app ADD . /app RUN pip install –upgrade pip RUN pip install -r requirements.txt EXPOSE 5000 ENTRYPOINT ["python"] CMD ["/app/con.sh"] CMD ["-u","app.py"] 该脚本被命名为con.sh,并具有这样的结构: export REDSHIFT_HOST="[Host of the DB]" export REDSHIFT_USER="[DB user]" export REDSHIFT_PASSWD="[DB password]" export POSTGRES_DB="[DB name]" export MODEL_IP="[endpoint of another service]" export USER_SF="[user]" export PASS_SF="[pass]" […]

无法将使用docker run的命令行parameter passing给Shell脚本文件

使用的命令: sudo docker run -it -p 80:9000 c822030cc576 sh /app/test/play/docker-entrypoint.sh /app/test/play/servers/server01/play/conf/override.conf /app/log/nflott/play true dev 我的参数: $2:/app/test/play/servers/server01/play/conf/override.conf $3:/app/log/nflott/play $4:true $5:dev Which needs to be passed to the docker-entrypoint.sh Script 我的entrypoint.sh脚本代码: echo "CONFIG:$2 echo "LOG_HOME:$3" echo "SKIP_LOGFILE:$4" echo "LOG_ENV:$5 /app/test/play/servers/server01/play/bin/apiserver \ -Dconfig.file=/app/test/play/servers/server01/play/conf/override.conf \ -Dpidfile.path=/app/test/play/servers/server01/RUNNING_PID \ -DLOG_HOME=$3 \ -DSKIP_LOGFILE=$4 \ -DLOG_ENV=$5 \ Error: CONFIG:/app/test/play/servers/server01/play/conf/override.conf LOG_HOME:/app/log/nflott/play SKIP_LOGFILE:true LOG_ENV:dev Bad […]

在Docker容器中执行cron服务时出现的问题?

我有一些cronjobs,我总是使用和工作正常。 但现在,试图将所有东西都移到Docker容器中,我Docker了这些错误: /usr/bin/service: 127: /usr/bin/service: stop: not found /usr/bin/service: 128: exec: start: not found 它们在执行诸如"service restart nginx"这些cronjob之类的东西时发生。 请注意,相同的命令可以在cronjob之外正常工作。 PATH在/etc/crontab正确设置。 将它添加到/etc/cron.d中的个别cronfiles也不起作用。 我也尝试在/etc/crontab中将SHELL=/bin/sh更改为SHELL=/bin/bash (即使它不安全,但是想尝试),但是没有工作。 有任何想法吗?