在keycloak docker映像中找不到Dockerfile文件

时间:2019-12-07 10:41:15

标签: docker

我最近尝试在本地设置中克隆我们的生产代码,这意味着该代码正在生产中运行。

docker文件看起来像

FROM jboss/keycloak

COPY km.json /opt/jboss
COPY entrypoint.sh /opt/jboss

USER root
RUN chown jboss /opt/jboss/entrypoint.sh && chmod +x /opt/jboss/entrypoint.sh
USER 1000

ENTRYPOINT ["/opt/jboss/entrypoint.sh"]
CMD [""]

我能够成功创建docker映像,但是当我尝试运行它时却出现错误

Caused by: java.io.FileNotFoundException: km.json (No such file or directory)

回购结构

km/keycloak-images/km.json
km/keycloak-images/DockerFile
km/keycloak-images/entrypoint.sh

Docker撰写文件结构

/km/docker-compose.yml
/km/docker-compose.dev.yml

docker-compose.dev.yml看起来像

version: '3'

# The only service we expose in local dev is the keycloak server
# running an h2 database.
services:
  keycloak:
    build: keycloak-image
    image: dt-keycloak
    environment:
      DB_VENDOR: h2
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
      KEYCLOAK_HOSTNAME: localhost
    ports:
      - 8080:8080

我从/ km运行命令

docker-compose -f docker-compose.dev.yml up --build

3 个答案:

答案 0 :(得分:0)

基本上无法在docker容器中找到要检查的文件。

$docker run --rm -it <containerName> /bin/bash #this command is used to run the docker and get inside the container.
cd /opt/jboss #check km.json file is there or not

已编辑:基本上COPY(km.json)中源的路径不正确。尝试使用绝对路径使其相对。

FROM jboss/keycloak

COPY ./km.json /opt/jboss # changed this line
COPY entrypoint.sh /opt/jboss

USER root
RUN chown jboss /opt/jboss/entrypoint.sh && chmod +x /opt/jboss/entrypoint.sh
USER 1000

ENTRYPOINT ["/opt/jboss/entrypoint.sh"]
CMD [""]

答案 1 :(得分:0)

您的复制操作错误

如果您从

运行
/km

您可能需要将COPY更改为

COPY keycloak-images/km.json /opt/jboss

如果您在Mac上运行,请尝试使用ADD而不是COPY,因为mac副本存在很多问题

答案 2 :(得分:0)

尝试使用此撰写文件:

commit-msg

您必须指定docker build上下文,以便将需要复制的文件传递到守护程序。

请注意,当您从version: '3' services: keycloak: build: context: ./keycloak-images image: dt-keycloak environment: - DB_VENDOR: h2 - KEYCLOAK_USER: admin - KEYCLOAK_PASSWORD: password - KEYCLOAK_HOSTNAME: localhost ports: - 8080:8080 目录中不执行停靠组合时,需要调整此上下文路径。这是因为您在dockerfile上指定了

km

说发送到docker daemon的构建上下文应该是包含这些文件的目录。