2016-11-20 7 views
0

Dockerイメージから実行するLuaスクリプトを取得できません。DockerでLuaスクリプトを実行しています

私は画像に含まに必要な非常に単純なのLuaスクリプトを持っている:

FROM debian:latest 
RUN apt-get -y update && apt-get -y install lua5.1 lua-socket lua-sec 
ADD hello.lua /home/user/bin/hello.lua 
CMD ["/bin/sh", "-c", “lua /home/user/bin/hello.lua”] 

しかし、私は、私ドッカーイメージを実行しようとすると:私はDockerfileを作成している

function main(...) 
    print("hello world") 
end 

を次のエラーが発生する:

/bin/sh: 1: [/bin/sh,: not found 

このエラーが発生する理由と、どのようにsc Dockerイメージを実行すると、スクリプトが実行されます。あなたが直接あなたのDockerfileにCMDとしてluaコマンドを使用することができます

答えて

0

あなたDockerfileの最終ラインが

CMD ["lua", "/home/user/bin/hello.lua"] 

でなければなりませんが、あなたはhello.luaは何も印刷されません、覚えておいてください。 関数mainを定義しますが、この例ではこの関数は呼び出されません。

これはPythonではなく、メインチャンクが呼び出されるluaファイルを呼び出すときにLuaとともに呼び出されます。 コマンドラインからパラメータを渡す場合:

CMD ["lua", "/home/user/bin/hello.lua", "param1"] 

hello.lua:

-- get all passed parameters into table 
local params = {...} 

-- print first parameters if any 
print(params[1]) 
0

CMD ["lua", "/home/user/bin/hello.lua"] 
1

あなたの最後のコマンドは、Luaのコマンドを中心に、それにsmartquotesを持っています。これらは、無効なJSON文字です:結果

CMD ["/bin/sh", "-c", “lua /home/user/bin/hello.lua”] 

、ドッカーは、その文字列を実行しようとすると、不足している[/bin/sh,に関するエラーを投げています。通常の引用符にあなたの引用符を切り替えて(そしてあなたがそれらを追加したものを用いるものは何でもエディタ避ける):

CMD ["/bin/sh", "-c", "lua /home/user/bin/hello.lua"] 

他の人が述べたように、あなたは完全にシェルをスキップすることができます。

CMD ["lua", "/home/user/bin/hello.lua"] 

そして、あなたのhello.luaのメイン

:最後に

print("hello world") 

、あなたのようなものが表示されるはずです。機能はあなたが実行したいだけのコマンドにこれをダウン簡素化することができますので、呼び出されません

$ cat hello.lua 
print("hello world") 

$ cat Dockerfile 
FROM debian:latest 
RUN apt-get -y update && apt-get -y install lua5.1 lua-socket lua-sec 
ADD hello.lua /home/user/bin/hello.lua 
CMD ["lua", "/home/user/bin/hello.lua"] 

$ docker build -t luatest . 
Sending build context to Docker daemon 3.072 kB 
Step 1 : FROM debian:latest 
---> 7b0a06c805e8 
Step 2 : RUN apt-get -y update && apt-get -y install lua5.1 lua-socket lua-sec 
---> Using cache 
---> 0634e4608b04 
Step 3 : ADD hello.lua /home/user/bin/hello.lua 
---> Using cache 
---> 35fd4ca7f0f0 
Step 4 : CMD /bin/sh -c lua /home/user/bin/hello.lua 
---> Using cache 
---> 440098465ee4 
Successfully built 440098465ee4 

$ docker run -it luatest 
hello world 
関連する問題