我需要在开始服务之前设置ulimit
和sysctl
,因此我一直在ENTRYPOINT
中执行以下操作:
ulimit -n 4096; sysctl -p; start_service
但似乎如果我想使用CMD
作为ENTRYPOINT
的默认参数,我必须使用json数组格式。
但我不知道如何使用json数组格式运行多个语句。
答案 0 :(得分:1)
最简单的方法可能是将其作为脚本执行(这里将start_service替换为一个简单的echo用于测试)
$ cat start.sh
#!/bin/bash
ulimit -n 4096; sysctl -p; echo $@
$ cat Dockerfile
FROM ubuntu
COPY . /tmp
CMD ["test"]
ENTRYPOINT ["/tmp/start.sh"]
$ docker build -t test .
...
$ docker run test
test
$ docker run test "hello world"
hello world
在构建容器之前请记住chmod 755 start.sh
,否则脚本将无法执行。