在 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

码头工人撰写文件结构

/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 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 [""]

您的复制操作是错误的

如果你从

/km

您可能需要将 COPY 更改为

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

如果您在 Mac 上运行,请尝试使用 ADD 而不是 COPY,因为 mac 在复制方面存在许多问题

尝试使用此撰写文件:

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

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

请注意,当您不从目录中执行docke-compose 时,您需要调整km上下文路径。这是因为在您的 docker 文件上您指定了

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

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

最新更新