2016-03-29 3 views
2

Я пытаюсь подключиться к серверу изданий Stardog 3.1.3. Контейнер не запускается, потому что он видит каталог вместо файла лицензии. Для записи я нахожусь в Windows. Эти шаги, которые я отслеживаю:Файл, скопированный Docker, рассматривается как каталог

Создание контейнера данных

docker create -v /data/stardog:/data/stardog --name stardog_data busybox /bin/true 

Скопируйте местный лицензионный ключ в контейнере данных (не сделано в Dockerfile, которая упоминается ниже как лицензии от окружения)

docker cp .\stardog\stardog-license-key.bin stardog_data:/stardog-license-key.bin 

Создать образ, основанный на следующем Dockerfile

docker build -t me/stardog . 


FROM java:openjdk-8-jdk 

ENV STARDOG_VER stardog-3.1.3 
ENV STARDOG_HOME /data/stardog 

COPY ${LOCAL_PATH}/${STARDOG_VER}.zip/
RUN unzip ${STARDOG_VER}.zip 

WORKDIR /${STARDOG_VER} 

CMD rm $STARDOG_HOME/system.lock || true && bin/stardog-admin server start && (tail -f $STARDOG_HOME/stardog.log &) && while (pidof java > /dev/null); do sleep 1; done 

Запуск Стардог контейнер

docker run -d -p 5820:5820 --volumes-from stardog_data --name stardog me/stardog 

Когда я исполняю docker ps -a, я вижу, что контейнер остановлен через пару секунд:

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS      PORTS     NAMES 
9559b22473e1  me/stardog    "/bin/sh -c 'rm $STAR" 26 minutes ago  Exited (1) 26 minutes ago       stardog 
2b929329e35e  busybox     "/bin/true"    32 minutes ago  Created            stardog_data 

Когда я проверяю журналы с docker logs stardog, я получаю это :

com.clarkparsia.license.InvalidLicenseException: java.io.FileNotFoundException: /data/stardog/stardog-license-key.bin (Is a directory) 
     at com.clarkparsia.license.LicenseValidator.validate(LicenseValidator.java:157) 
     at com.complexible.stardog.StardogLicense.findLicense(StardogLicense.java:127) 
     at com.complexible.stardog.StardogLicense.<init>(StardogLicense.java:70) 
     at com.complexible.stardog.Stardog.<init>(Stardog.java:158) 
     at com.complexible.stardog.Stardog.initialize(Stardog.java:263) 
     at com.complexible.stardog.Stardog.initialize(Stardog.java:254) 
     at com.complexible.stardog.Stardog.buildServer(Stardog.java:247) 
     at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:144) 
     at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:47) 
     at com.complexible.stardog.cli.CLIBase.execute(CLIBase.java:54) 
     at com.complexible.stardog.cli.admin.CLI.main(CLI.java:194) 
Caused by: java.io.FileNotFoundException: /data/stardog/stardog-license-key.bin (Is a directory) 
     at java.io.FileInputStream.open0(Native Method) 
     at java.io.FileInputStream.open(FileInputStream.java:195) 
     at java.io.FileInputStream.<init>(FileInputStream.java:138) 
     at com.clarkparsia.license.LicenseValidator.validate(LicenseValidator.java:113) 
     ... 10 more 
Your Stardog license is invalid. Please contact [email protected] for information on obtaining a new license. 

Похоже, что файл лицензии считается каталогом. Что я делаю не так?

Я использую следующую версию Docker:

Client: 
Version:  1.10.3 
API version: 1.22 
Go version: go1.5.3 
Git commit: 20f81dd 
Built:  Thu Mar 10 21:49:11 2016 
OS/Arch:  windows/amd64 

Server: 
Version:  1.10.3 
API version: 1.22 
Go version: go1.5.3 
Git commit: 20f81dd 
Built:  Thu Mar 10 21:49:11 2016 
OS/Arch:  linux/amd64 
+0

док в https://docs.docker.com/engine/reference/commandline/cp/ показывает несколько случаев, когда адресат становится каталог, например 'SRC_PATH указывает каталог DEST_PATH не существует DEST_PATH является созданный как каталог, и содержимое исходного каталога копируется в этот каталог 'вы должны поместить полный путь в исходный код и удалить – user2915097

+0

Я не вижу рекомендаций относительно полных путей, но я пробовал следующее без успеха (такая же ошибка): 'C: \ Users \ xxx \ stardog \ stardog-license-key.bin stardog_data:/data/stardog/stardog-license-key.bin'. Кроме того, AFAIK: Я имею в виду следующий сценарий: 'SRC_PATH указывает файл, DEST_PATH не существует, файл сохраняется в файл, созданный в DEST_PATH'. Есть идеи? – tstorms

+0

docker cp doc говорит 'Команда cp ведет себя как команда Unix cp -a в том, что каталоги копируются рекурсивно с разрешениями, которые были сохранены, если это возможно' – user2915097

ответ

0

Это, кажется, связанных с Windows, проблема. Я пробовал эти одни и те же шаги на родной машине Ubuntu (14.04), и он работает так, как ожидалось. Я подал это как bug и, надеюсь, скоро это исправится.

Смежные вопросы