我最近尝试在本地设置中克隆我们的生产代码,这意味着该代码正在生产中运行。
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
答案 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的构建上下文应该是包含这些文件的目录。