在 Docker 中运行 Lua 脚本
2016-11-20 20:3:2
收藏:0
阅读:157
评论:3
我在 Docker 镜像中无法运行 Lua 脚本。
我有一个非常简单的 Lua 脚本需要包含在镜像中:
function main(...)
print("hello world")
end
我创建了一个 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 ["/bin/sh", "-c", “lua /home/user/bin/hello.lua”]
但是当我尝试运行 Docker 镜像时,我会收到以下错误:
/bin/sh: 1: [/bin/sh,: not found
是否有一个合理的解释为什么会出现这个错误,以及如何在运行 Docker 镜像时使脚本运行?
点赞
用户2060502
你的 Dockerfile 的最后一行应该是
CMD ["lua", "/home/user/bin/hello.lua"]
记住,你的 hello.lua 不会打印出任何内容。 它定义了一个主函数,但在该例子中未被调用。
它不是 Python,在 Lua 中,调用 lua 文件时会调用主代码块。 如果你想从命令行传递参数:
CMD ["lua", "/home/user/bin/hello.lua", "param1"]
hello.lua:
-- 将所有传入的参数放入表中
local params = {...}
-- 如果有参数,打印第一个参数
print(params[1])
2016-11-21 11:00:26
用户596285
你最终的命令中有智能引号在 lua 命令周围。这些是无效的 JSON 字符:
CMD ["/bin/sh", "-c", “lua /home/user/bin/hello.luaâ€]
因此,Docker 正在尝试执行该字符串,并抛出缺少 [/bin/sh 的错误。把引号改成普通引号(并且避免使用添加这些引号的任何编辑器):
CMD ["/bin/sh", "-c", "lua /home/user/bin/hello.lua"]
正如其他人提到的,你可以完全跳过 shell:
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
2016-11-21 12:17:07
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你可以直接在 Dockerfile 中使用
lua命令作为 CMD:CMD ["lua", "/home/user/bin/hello.lua"]