考虑我有这个docker-compose.yml
version: '3'
services:
webapp:
image: some_image:repo
container_name: my_container
ports:
- "8080:8080"
#entrypoint : /home/my_tool/
command: bash -c "/home/my_tool/runSomeScript.sh argument1 argument2 && /bin/bash"
stdin_open: true
tty: true
这是我要运行的图像/容器中的脚本。
$ cat runSomeScript.sh
#!/bin/bash
echo "First arg: $1"
echo "Second arg: $2"
因此,当我执行docker-compose up命令时...我无法将参数传递给应该使用这些值执行bash脚本的容器...
需要注意的是,如果我仅在不使用参数的情况下这样做:
command: bash -c "/home/my_tool/runSomeScript.sh && /bin/bash"
以及不含此类参数的脚本:
$ cat runSomeScript.sh
#!/bin/bash
echo "First arg: ddd"
echo "Second arg: fff"
然后容器ups并执行shell脚本。 但是,通过传递的参数将不起作用。我在这里想念的。
答案 0 :(得分:0)
不要着迷于“保持容器运行”的技巧。让您的容器运行其过程,并在退出时退出容器。在Compose语法中,您可以将其简化为
(16, 2)
如果您想一次执行一次就可以启动它,可以docker-compose run
,提供自己的命令行。
# Compose provides an sh -c '...' wrapper for you
# Do not try to run the main container process, then a shell
command: /home/my_tool/runSomeScript.sh argument1 argument2