Ничего не происходит при копировании файла с Dockerfile - PullRequest
0 голосов
/ 05 марта 2020

Я использую docker -compose для простого контейнера Keycloak, и я пытался установить новую тему для Keycloak. Однако я не смог скопировать даже один файл в контейнер, используя Dockerfile. Dockerfile и docker -compose.yml находятся в одном каталоге

Ни одна из этих команд не работает и не вызывает каких-либо событий или предупреждений в журналах.

COPY test /tmp/
COPY /home/adm/workspace/docker/keycloak-cluster/docker/kctheme/theme/login/. /opt/jboss/keycloak/themes/keycloak/login/

Копирование вручную с помощью

sudo docker cp test docker_keycloak_1:/tmp

работает без проблем.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Быстрое понимание Docker.

docker build: создание изображения из Dockerfile

docker run: создание контейнера из изображения.

(вы можете создать себе изображение или использовать существующее изображение из docker hub )

В зависимости от того, что вы сказали, у вас есть 2 варианта.

  • Создайте новое docker изображение на основе существующего и добавьте тему.

что-то вроде

# Dockerfile
FROM jboss/keycloak

COPY test /tmp/
COPY /home/adm/workspace/docker/keycloak-cluster/docker/kctheme/theme/login/. /opt/jboss/keycloak/themes/keycloak/login/

, а затем используйте docker build для создания нового изображения

  • Поместите тему в правильный каталог

, используя docker -создать том

version: '3'
services:
  keycloak:
    image: quay.io/keycloak/keycloak:latest
    volumes:
      - "./docker/kctheme/theme/login:/opt/jboss/keycloak/themes/keycloak/login"

0 голосов
/ 05 марта 2020

Файлы должны находиться в том же каталоге или подкаталоге каталога, в котором находится файл сборки Dockerfile, если вы используете COPY, и должны присутствовать во время сборки. Без абсолютных путей.

/ tmp в качестве места назначения также немного хитро, потому что процесс запуска контейнера может иметь очистку / tmp, что означает, что вы никогда не увидите этот файл в работающем контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...