докер

grigori

( ͡° ͜ʖ ͡°)
Команда форума
конкретно сейчас я думаю не о кастомизации, а чтобы просто ставить 3 образа на сервер 1й командой, удалить конфиги ненужных расширений php, прописать имя домена, скопировать в папку дамп базы, запустить swarm - и все работает без пакетов, wget, ppa, pecl, компиляций, просто тыц - и nginx/php/memcached/mysql/postgeres/redis
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Написал удобную инициализацию контейнера для php - при первом запуске в локальной папке создаются дефолтные конфиги, которые можно отредактировать и запустить контейнер с нужной конфигурацией.
Сделано в расчете, что папка конфигов будут храниться в репозитории проекта, а образ можно поставить с docker hub.
https://github.com/grikdotnet/phpdocker/
Вместо vagrant, в общем.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
А у этого alpine есть стабильное дерево? Выглядит как source-based роллинг-релиз а-ля freebsd.
Тогда уж лучше arch, он тоже кастрируется до вменяемого уровня, но там хотя бы инитом системд, а не шелл скрипты.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Мы потыкались 2 дня в alpine и чет-то он нам понравился прям.
 

fixxxer

К.О.
Партнер клуба
А, прочитал, есть стабильная ветка. Тогда это имеет смысл, да.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я тоже собираюсь переделать свой образ на alpine, но еще не разбирался как в нем компилировать

вчера дописал конфиги nginx с docker-compose, и инструкцию все там же на github как быстро настроить и запустить стек,
при этом все конфиги я предполагаю хранить в репозитории приложения, а образы скачиваются из docker hub
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
А в dockerfile до сих пор не придумали ничего лучше, чем заставлять писать кучу && команд для создания 1 слоя?
 

fixxxer

К.О.
Партнер клуба
в докере вообще много что не очень придумали, это proof of concept который стал продакшен решением, потому что концепт крутой, а альтернатив еще не было

посмотри rkt и acbuild (или dgr), если волнует эстетическая сторона ;)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
докер мне напоминает ранний линукс, когда ядро собирали руками :)
грязную часть я сделал - можно брать и юзать безо всяких &&, с обновлением версий php
 
Последнее редактирование:

Redjik

Падаван
@grigori, а у тебя разные контейнеры имеют доступ друг к другу, ну например есть app контейнер, который по http обращается к форуму, находящимся в другом контейнере?
а то у нас ребята как то такое сделали, но для меня докер все еще сродни черной магии =))
 

Redjik

Падаван
Код:
spira_api_1               /opt/bin/supervisord-start.sh    Up       8080/tcp, 9000/tcp                            
spira_app_1               /opt/bin/nginx-start.sh          Up       8081/tcp                                      
spira_cache_1             /entrypoint.sh redis-server      Up       0.0.0.0:6379->6379/tcp                        
spira_database_1          /docker-entrypoint.sh postgres   Up       0.0.0.0:5432->5432/tcp                        
spira_devtools_1          /bin/bash -c ls -alh /data       Exit 0                                                 
spira_elasticsearch_1     /docker-entrypoint.sh elas ...   Up       0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
spira_forum_1             /opt/bin/supervisord-start.sh    Up       80/tcp, 9000/tcp                              
spira_loadbalancer_1      /opt/bin/nginx-start.sh          Up       0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp      
spira_mailcatcher_1       mailcatcher -f --ip=0.0.0.0      Up       1025/tcp, 1080/tcp                            
spira_queue_1             beanstalkd -p 11300              Up       11300/tcp                                     
spira_queuerunner_1       /opt/bin/queue-start.sh          Up                                                     
spira_vanilladatabase_1   /docker-entrypoint.sh mysqld     Up       0.0.0.0:3306->3306/tcp
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@Redjik, все контейнеры в одной подсети, и докер может резолвить контейнеры по именам.

Код:
airgri:phpextensions gri$ docker runм--name=c1 -d grigori/phpextensions php-fpm
airgri:phpextensions gri$ docker run -ti --name=c2 --link=c1:other_container grigori/phpextensions bash
root@d6df67d6365c:/var/www/html# ping other_container
PING other_container (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.085 ms
root@d6df67d6365c:/var/www/html# ping c2
ping: unknown host
опция -d - чтобы 1й работал в фоне, -ti и bash - чтобы попасть в shell во 2м контейнере
--link - во 2м контейнере резолвить c1, other_container - алиас, резолвятся оба имени
а если контейнеры запущены из compose - имена сразу резолвятся
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
В последней версии докера 17.6 реализована важная фича - сущность под названием Configs.
https://docs.docker.com/engine/swarm/configs/

Суть в том, что в движке докера рядом с контейнерами можно создать "конфиги" - именованные текстовые записи, которые доступны в контейнере в виде файлов.
Значение можно задать строкой или файлом.
Это кардинально упрощает создание переносимых контейнеров. Теперь не надо плодить образы ради изменения конфига или монтировать файлы конфигов в контейнеры.

В compose-файле можно задать конфиги для сервисов (и небольшой дамп для инициализации базы), и подключать в официальные образы.
Сам compose-файл с файлами конфигов коммитится в git, и приложение со всеми зависимостями локально поднимается одной командой.
https://docs.docker.com/compose/compose-file/#configs

Половина моих заметок больше неактуальна. Все эти танцы с бубнами вокруг конфигов можно оставить в прошлом.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Но это же хорошо? И мысль сама по себе довольно интересная.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@AnrDaemon, это прекрасно. Это сокращает время на запуск приложения в контейнерах вдвое, помогает разработчикам иметь кастомные конфиги.
Например, можно в локальном контейнере на лету подключить xdebug, выполнив команды
Код:
$ echo "extension=xdebug" | docker config create php-xdebug.conf -
$ docker service update --config-add source=php-xdebug.conf,target=/etc/php/conf.d/php-xdebug.conf my-php-fpm-container
 
Последнее редактирование:

Redjik

Падаван
эм, а в чем принципиальное отличие от маунта конфига как volume?
не совсем понимаю
 

WMix

герр M:)ller
Партнер клуба
@Redjik, вопрос не совсем понятен, доступен твой volume между 2 контейнерами или между хостом и гостем? Если да, то как без mount? Или ты просто монтируешь ручками и не врубаешься зачем volume?
 
Сверху