2

我正在尝试使用构建和运行 docker 映像docker-compose up 但是,我得到了错误can't open /config/config.template: no such file

我的 Dockerfile 如下:

FROM quay.io/coreos/clair-git
COPY config.template /config/config.template

#Set Defaults
ENV USER=clair PASSWORD=johnnybegood INSTANCE_NAME=postgres PORT=5432

RUN apk add gettext
CMD envsubst < /config/config.template > /config/config.yaml && rm -f /config/config.template && exec /clair -config=/config/config.yaml
ENTRYPOINT []

添加行时RUN ls -la /config/,运行后返回以下内容docker-compose up --build

drwxr-xr-x    2 root     root          4096 Sep 16 06:46 .
drwxr-xr-x    1 root     root          4096 Sep 16 06:46 ..
-rw-rw-r--    1 root     root           306 Sep  6 05:55 config.template

这是错误:

clair_1_9345a64befa1 | /bin/sh: can't open /config/config.template: no such file

我尝试更改行尾并检查 docker 版本。它似乎可以在运行不同操作系统的不同机器上工作。

我正在使用 Ubuntu 18.04 并且有 docker 版本docker-compose version 1.23.1, build b02f1306

我的 docker-compose.yml 文件:

version: '3.3'

services:
  clair:
    build:
      context: clair/
      dockerfile: Dockerfile
    environment:
      - PASSWORD=johnnybegood
      - USER=clair
      - PORT=5432
      - INSTANCE=postgres
    ports:
      - "6060:6060"
      - "6061:6061"
    depends_on:
      - postgres
  postgres:
    build:
      context: ../blah/postgres
      dockerfile: Dockerfile
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=johnnybegood
      - POSTGRES_USER=clair
      - POSTGRES_DB=clair
4

1 回答 1

0

Docker CMD 仅设计为运行单个进程,遵循每个容器一个进程的 docker 哲学。尝试使用启动脚本来修改您的模板,然后启动 clair。

FROM quay.io/coreos/clair-git
COPY config.template /config/config.template
COPY start.sh /start.sh

#Set Defaults
ENV USER=clair PASSWORD=johnnybegood INSTANCE_NAME=postgres PORT=5432

RUN apk add gettext
ENTRYPOINT ["/start.sh"]

并使用您的 Dockerfile 将 startscript(具有可执行权限)复制到容器中

!#/bin/sh

envsubst </config/config.template > /config/config.yaml
/clair -config=/config/config.yaml

编辑:在大卫迷宫发表评论后更改了答案

于 2019-09-16T07:25:03.887 回答