执行时
docker-compose up --build
我收到错误FATAL: Command <COMMAND> not found.
我的 docker-compose.yaml 文件。
version: '3'
services:
gitlab-runner:
container_name: gitlab-runner
image: gitlab/gitlab-runner:v15.8.2
volumes:
- ./config:/etc/gitlab-runner
- ./sock:/var/run/docker.sock
command: bash -c "echo '123.123.255.11 adc.cde.com' >> /etc/hosts"
我放在那里的命令并不重要。到目前为止,我尝试过的每个命令都遇到相同的错误(
ls
、cd
、/bin/bash
、sh
、/bin/sh
或我复制到卷的 shell 脚本)。
我如何让它执行?
作为侧节点:是否有另一种方法可以在容器启动时自动修改文件?
Docker Compose 版本 2.22.0 使用的图像:gitlab/gitlab-runner:v15.8.2
我知道事实上,bash 在此图像上可用,因为
docker exec -it <container> bash
确实有效(以及我列出的所有其他内容)。
图像
gitlab/gitlab-runner:v15.8.2
定义了ENTRYPOINT
脚本:
$ docker image inspect gitlab/gitlab-runner:v15.8.2
...
"Entrypoint": [
"/usr/bin/dumb-init",
"/entrypoint"
],
...
入口点脚本最终运行:
exec gitlab-runner "$@"
所以当你设置时:
command: /usr/bin/bash -c "echo '123.123.255.11 adc.cde.com' >> /etc/hosts"
你实际上正在跑步:
gitlab-runner /usr/bin/bash -c "echo ..."
并且
/usr/bin/bash
不是有效的 gitlab-runner
命令,因此会出现错误。
忽略上述所有内容,您当前的配置存在一个更根本的问题。如果它按您的预期工作并运行
bash
命令行,容器将立即退出(因为初始命令退出时容器已存在)。
extra_hosts
选项:
services:
gitlab-runner:
container_name: gitlab-runner
image: gitlab/gitlab-runner:v15.8.2
volumes:
- ./config:/etc/gitlab-runner
- ./sock:/var/run/docker.sock
extra_hosts:
- adc.cde.com:123.123.255.11
容器运行后,我们会看到:
$ docker exec gitlab-runner cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
123.123.255.11 adc.cde.com
172.27.0.2 61da9a89d42f