首页 > 解决方案 > 在 keycloak docker 映像中找不到 Dockerfile 文件

问题描述

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

码头文件看起来像

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

标签: docker

解决方案


基本上无法在 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 [""]

推荐阅读