Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
system:dockerfile [2024/05/02 00:44] mirocowsystem:dockerfile [2024/05/02 19:24] (текущий) mirocow
Строка 2: Строка 2:
  
 ====== Dockerfile ====== ====== Dockerfile ======
 +
 +===== Инструкции =====
 +
  
   * **RUN**: В основном используемый для создания образов и установки приложений и пакетов, создает новый слой поверх существующего образа, фиксируя результаты.   * **RUN**: В основном используемый для создания образов и установки приложений и пакетов, создает новый слой поверх существующего образа, фиксируя результаты.
Строка 11: Строка 14:
   * В идеале отдельно указывать исполяемый бинарник в ENTRYPOINT и отдельно команды к нему в CMD.   * В идеале отдельно указывать исполяемый бинарник в ENTRYPOINT и отдельно команды к нему в CMD.
 </note> </note>
 +
 +===== ENTRYPOINT / CMD =====
 +
  
 ^ Режим     ^ Пример                            ^ Формат запуска             ^ Завершение работы  ^ $PATH ^ ^ Режим     ^ Пример                            ^ Формат запуска             ^ Завершение работы  ^ $PATH ^
Строка 41: Строка 47:
 === endpoint === === endpoint ===
  
 +===== Описание =====
 +
 +  * FROM — указывает название образа (image), который будет взят за основу.
 +  * ENV — устанавливает переменную среды
 +  * RUN — запустить команду в контейнере (все команды исполняются с полными правами в пределах контейнера)
 +  * ADD — добавить файл в контейнер
 +  * VOLUME — указать монтируемые директории (их можно монтировать на хост машину или на другие контейнеры)
 +  * EXPOSE — указать транслируемые порты (их можно транслировать на хост машину или на другие контейнеры)
 +  * CMD — запустить процесс (это и будет процесс, вокруг которого построен контейнер)
 +
 +<code bash>
 +# Используем за основу контейнера Ubuntu 14.04 LTS
 +FROM ubuntu:14.04
 +# Переключаем Ubuntu в неинтерактивный режим — чтобы избежать лишних запросов
 +ENV DEBIAN_FRONTEND noninteractive 
 +# Устанавливаем локаль
 +RUN locale-gen ru_RU.UTF-8 && dpkg-reconfigure locales 
 +
 +# Добавляем необходимые репозитарии и устанавливаем пакеты
 +RUN apt-get install -y software-properties-common
 +RUN add-apt-repository -y ppa:ondrej/php5-5.6
 +RUN add-apt-repository -y ppa:nginx/stable
 +RUN sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
 +RUN apt-get update
 +RUN apt-get upgrade -y
 +RUN apt-get install -y wget curl php5-fpm php5-mysql php5-gd php5-curl php-pear php-apc php5-mcrypt php5-imagick php5-memcache supervisor nginx
 +
 +# Добавляем описание виртуального хоста
 +ADD astgo.ru /etc/nginx/sites-enabled/astgo.ru 
 +# Отключаем режим демона для Nginx (т.к. запускать будем сами) 
 +RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf 
 +# Отключаем режим демона для php-fpm
 +RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf 
 +# Добавляем конфиг supervisor (описание процессов, которые мы хотим видеть запущенными на этом контейнере)
 +ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
 +
 +# Объявляем, какие директории мы будем подключать
 +VOLUME ["/var/www"
 +# Объявляем, какой порт этот контейнер будет транслировать
 +EXPOSE 80 
 +# Запускаем supervisor
 +CMD ["/usr/bin/supervisord"
 +</code>
  
 ====== Ссылки ====== ====== Ссылки ======
  
 {{topic>[docker]}} {{topic>[docker]}}