我正在创建一个bash脚本,它将包装一个docker run命令,传入所有参数.正在运行的docker cmd有一个如下-e参数:
docker run --rm -it --name some_name -v $(pwd):/some_dir some_image some_command -e -r -t
Run Code Online (Sandbox Code Playgroud)
但是,bash脚本由于某种原因未传入-e参数.
例如,我有以下test.sh脚本.
#!/bin/bash
echo "Echoing the command arguments."
echo $@
Run Code Online (Sandbox Code Playgroud)
该-e参数不通过传递到$@时在第一位置.
$ ./test.sh -e -r -t
Echoing the command arguments.
-r -t
$ ./test.sh -r -e -t
Echoing the command arguments.
-r -e -t
Run Code Online (Sandbox Code Playgroud)
最后,我希望能够按如下方式调用docker命令,只需将所有给定参数从bash脚本传递到docker命令即可.
docker run --rm -it --name some_name -v $(pwd):/some_dir some_image some_command $@
Run Code Online (Sandbox Code Playgroud)
如果用户期望-e传入参数并且未发生关联活动,则这可能会使用户感到困惑.
有没有办法让-e参数通过?
我不确定如何正确将4567Docker 的Sinatra端口正确地公开回主机。在本地运行该应用程序没有问题。
以下存储库显示了问题的情况https://gitlab.com/davidhooey/sinatra-docker
通过搜索,我注意到以下问题:在Docker容器中运行Ruby Sinatra无法连接(通过Mac主机)或无法找到命令(在不同情况下)?将--host 0.0.0.0传递到rackup命令中。但是,我正在使用编程方式启动该网站Site.run!。
文件树
.
??? Dockerfile
??? Gemfile
??? Gemfile.lock
??? README.md
??? app.rb
??? docker-compose.yml
??? site.rb
??? views
??? index.erb
Run Code Online (Sandbox Code Playgroud)
app.rb
module App
class App
def initialize(args)
# Do some stuff before launching site.
# Launch site
Site.run!
end
end
end
App::App.new(ARGV)
Run Code Online (Sandbox Code Playgroud)
在site.rb该:bind西纳特拉设置为0.0.0.0。
site.rb
require 'sinatra'
module App
class Site < Sinatra::Base
set :bind, '0.0.0.0'
set :static, …Run Code Online (Sandbox Code Playgroud)