Как создать образ докера, используя уже настроенную папку приложения - PullRequest
0 голосов
/ 06 марта 2019

Мое основное требование - создать образ докера и развернуть его в реестре докера.

У меня есть предварительно настроенная папка приложения (/ home / myfolder) на моем сервере jenkins (для этой конфигурации я использовал ANSIBLE скрипт). Затем мне нужно создать образ докера из этой папки и развернуть его в реестре докера.

Какой лучший способ сделать это? Пожалуйста, помогите мне с этим, поскольку я новичок в докере.

пожалуйста, найдите мой Dockerfile ниже

  #Download base image ubuntu 16.04
  FROM ubuntu

  WORKDIR /dockerprojects



  #copy the zip file to docker folder
  COPY /wso2telcohub-4.0.0-SNAPSHOT /home/myfolder/dockerprojects/IGW/dockerCI

  COPY cp /wso2is-km-5.6.0 /home/myfolder/dockerprojects/IGW/dockerCI

  CMD [“bash”]

1 Ответ

0 голосов
/ 06 марта 2019

В этом Dockerfile есть куча вещей, которые потенциально могут пойти боком. Я прокомментирую их один за другим здесь:

#Download base image ubuntu 16.04
FROM ubuntu

Если вы собираетесь использовать изображение ubuntu:16.04, вам необходимо указать его. Без специального тега инструкция FROM будет искать тег latest, в этом случае найдите изображение ubuntu:latest для вас.

WORKDIR /dockerprojects

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

#copy the zip file to docker folder
COPY /wso2telcohub-4.0.0-SNAPSHOT /home/myfolder/dockerprojects/IGW/dockerCI

Эта команда скопирует файл /wso2telcohub-4.0.0-SNAPSHOT с "хост-машины", машины, на которой создается образ докера, в образ в расположении /home/myfolder/dockerprojects/IGW/dockerCI. Если местоположение в образе еще не существует, оно создаст файл с именем dockerCI в местоположении /home/myfolder/dockerprojects/IGW/. Я не думаю, что это то, что вы хотите.

Кроме того, ваш комментарий гласит, что это zip-файл, но в нем, похоже, отсутствует расширение, например .zip или .gz - я считаю, что вы не правильно ссылаетесь на файл.

COPY cp /wso2is-km-5.6.0 /home/myfolder/dockerprojects/IGW/dockerCI

Эта инструкция не будет выполнена. Для инструкции COPY вам не нужно использовать команду "cp". Однако, если вы удалите «cp» из строки, он попытается скопировать файл или каталог /wso2is-km-5.6.0 с хост-машины (это файл в корне файловой системы) в папку /home/myfolder/dockerprojects/IGW/dockerCI внутри полученного изображения.

CMD [“bash”]

Инструкция CMD просто устанавливает образ для запуска новой оболочки bash при запуске, что заставит контейнер немедленно завершиться после выполнения команды bash.

У меня такое ощущение, что исходное местоположение файлов, которые вы хотите поместить в образ, находится не в корне хост-машины. Но, вероятно, на /home/myfolder/dockerprojects/ на хосте, который вы упоминаете. Я попросил вас уточнить местоположение файлов, которые вы хотите на изображении, в комментарии к вашему вопросу.

Обновление

Ошибка, которую вы получаете, «нет такого файла или каталога» означает, что исходный файл, на который вы ссылаетесь в инструкции COPY, не существует.

Инструкция COPY работает следующим образом:

COPY <sourcepath> <targetpath>

Где <sourcepath> - это путь к файлу на машине, где строится образ. Этот путь относится к Dockerfile (или контексту сборки, если указан), если он не начинается с /, то он относится к корню файловой системы на хост-компьютере. И targetpath - это желаемый путь внутри получившегося изображения.

Допустим, у меня следующая структура папок:

/home/myfolder/dockerprojects/
├── Dockerfile
├── wso2telcohub-4.0.0-SNAPSHOT.zip
├── wso2is-km-5.6.0/
│   ├── anotherfile.txt

И я хотел, чтобы все файлы в пути /home/myfolder/dockerprojects/ были помещены в образ докера, ниже пути /app. Я бы сделал это с Dockerfile вроде:

FROM ubuntu:16.04

WORKDIR /app

COPY . /app/

Или каждый файл по отдельности, например:

FROM ubuntu:16.04

WORKDIR /app

COPY ./wso2telcohub-4.0.0-SNAPSHOT.zip /app/wso2telcohub-4.0.0-SNAPSHOT.zip
COPY ./wso2is-km-5.6.0 /app/wso2is-km-5.6.0

Это оставило бы меня с изображением докера:

/app/
├── Dockerfile
├── wso2telcohub-4.0.0-SNAPSHOT.zip
├── wso2is-km-5.6.0/
│   ├── anotherfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...