2016-01-25 5 views
-1

Есть ли возможность автоматизировать файл Docker. Я пытаюсь создать Dockerfile программно.Автоматизация Dockerfile

Из пользовательского интерфейса Мне нужно получить информацию и передать значения в качестве аргумента для создания файла Docker. Это возможно?

+0

Да. Возможно. –

+0

Im новый для докеров, не могли бы вы посоветовать мне, как его реализовать? – user2439278

+2

Во-первых, вы должны знать, как создавать файлы докеров вручную. Во-вторых, вы должны иметь возможность программировать. Затем объедините эти две способности. –

ответ

1

Может быть, этот подход полезен для вас:

Пример dockerfile

FROM ubuntu 
ENV APP ${APP} 
RUN apt-get install ${APP} 

Затем вы можете выполнить следующую команду:

$ docker build --build-arg APP=tmux . 
Sending build context to Docker daemon 2.048 kB 
Step 1 : FROM ubuntu 
---> d55e68e6cc9c 
Step 2 : ARG APP 
---> Using cache 
---> 8331d5368631 
Step 3 : ENV APP ${APP} 
---> Using cache 
---> 7bcd5ac4cbb7 
Step 4 : RUN apt-get install -y ${APP} 
---> Running in fa0ed50f6ab9 
Reading package lists... 
Building dependency tree... 
Reading state information... 
The following extra packages will be installed: 
    libevent-2.0-5 
The following NEW packages will be installed: 
    libevent-2.0-5 tmux 
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 
Need to get 373 kB of archives. 
After this operation, 895 kB of additional disk space will be used. 
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libevent-2.0-5 amd64 2.0.21-stable-1ubuntu1 [126 kB] 
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main tmux amd64 1.8-5 [247 kB] 
debconf: unable to initialize frontend: Dialog 
debconf: (TERM is not set, so the dialog frontend is not usable.) 
debconf: falling back to frontend: Readline 
debconf: unable to initialize frontend: Readline 
debconf: (This frontend requires a controlling tty.) 
debconf: falling back to frontend: Teletype 
dpkg-preconfigure: unable to re-open stdin: 
Fetched 373 kB in 2s (142 kB/s) 
Selecting previously unselected package libevent-2.0-5:amd64. 
(Reading database ... 11542 files and directories currently installed.) 
Preparing to unpack .../libevent-2.0-5_2.0.21-stable-1ubuntu1_amd64.deb ... 
Unpacking libevent-2.0-5:amd64 (2.0.21-stable-1ubuntu1) ... 
Selecting previously unselected package tmux. 
Preparing to unpack .../archives/tmux_1.8-5_amd64.deb ... 
Unpacking tmux (1.8-5) ... 
Setting up libevent-2.0-5:amd64 (2.0.21-stable-1ubuntu1) ... 
Setting up tmux (1.8-5) ... 
Processing triggers for libc-bin (2.19-0ubuntu6.6) ... 
---> 36175c4fdd16 
Removing intermediate container fa0ed50f6ab9 
Successfully built 36175c4fdd16 

В этом конкретном случае мы определяем, какой пакет мы хотите установить время сборки.

Работает с версии 1.9. Вы можете посмотреть the documentation

0

Docker имеет много документации о том, как написать Dockerfile! , но это может быть немного подавляющим в начале, может быть, вы можете использовать один из примеров, предоставленных смолой.io, как начало reference.

# Base image 
FROM resin/rpi-raspbian:wheezy 

# Install Java 8 
RUN echo 'deb http://archive.raspberrypi.org/debian/ wheezy main' >> /etc/apt/sources.list.d/raspi.list && \ 
echo oracle-java8-jdk shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections 

RUN apt-get update && \ 
apt-get -y install oracle-java8-jdk && \ 
apt-get clean && rm -rf /var/lib/apt/lists/* 

# Copy /app folder 
COPY . /usr/src/app 

# Compile Hello.java (main) 
RUN javac /usr/src/app/Hello.java 

# Run shell file with the command java -cp . Hello 
CMD /usr/src/app/run.sh 

Intellij есть плагин, который поможет вам написать dockerfile, но я настоятельно рекомендую вам начать делать это вручную.

+0

В то время как ссылка, которую вы предоставили, может ответить на вопрос, лучше всего вложить существенные части в ваш ответ, если страница по ссылке истекает в будущем. – Kmeixner

+0

Спасибо, сделаю! –

0

Вы можете использовать Tiller, Рубиновый камень, который генерирует текстовый файл, файлы конфигурации (.yaml, .conf ..etc). Это можно использовать для генерации Dockerfile «на лету». Исследуйте Тиллер, это просто .. !!

Пример:

  1. Установить tiller камень:

    $ gem install tiller

  2. создать следующие Dir структурировать

    enter image description here

  3. Добавляет common.yaml:

    contents of common.yaml

  4. Создание dockerfile_template:

    enter image description here

  5. команда Run культиватор внутри dockerfile реж:

    • для генерации шаблона для Dev окр (по умолчанию)
      $ tiller -b .
    • для генерации шаблона для производства окр путем пропускания -e production флага
      $ tiller -b . -e production

    культиватор v1.2.0 (https://github.com/markround/tiller) поколения
    шаблона заполнено

  6. Теперь вы можете увидеть Dockerfile создан в текущей директории

    enter image description here

просмотреть его содержимое при выполнении обеими средами

enter image description here


enter image description here