Maxim
т.е. для каждого сервиса я беру ruby:2.4.0-alpine, добавляю либы и добавляю код
ну вот вместо image: ruby:2.4.0-alpine надо написать build: path/to/Dockerfile
нꙺ
я так и делаю
Maxim
я так и делаю
а, он же на каждый билдит новый образ, вопрос чтобы сделать один образ через композе?
нꙺ
ДА!
Maxim
тоже интересно
нꙺ
сек
нꙺ
нꙺ
то, что в копируемой папке app - нет, остальное идентично
нꙺ
кроме последнего слоя, вопрос в том как этот ruby:alpine с несколькими слоями (которые для всех одинаковы) сделать, прежде чем уже с последним слоем (где код сервисов разный) билдить
нꙺ
вообще говоря, докер весьма интересная штука докер - это когда настраиваешь деплой в десять раз дольше, чем пишешь сам код ))
нꙺ
и?
Yury
ADD Gemfile /app/Gemfile ADD Gemfile.lock /app/Gemfile.lock RUN bundle install --without development ADD . /app
Yury
так лучше обычно
нꙺ
как мне образ в докер-композе предварительно собрать с этим отдельным докерфайлом?
Maxim
и в итоге кроме как сделать заранее docker build Dockerfile никак не решить эту задачу
нꙺ
ок
нꙺ
я попробую пару варинтов, из тех что в голове крутятся, и напишу тут, че выйдет
нꙺ
да ни в чем, собственно )
нꙺ
наверно я неправильно понял ONBUILD, ибо нигде не вижу директорию app
нꙺ
@masterdizer реквестирую хелп бандлер при билде вот такую штуку пишет: ERROR: "bundle install" was called with arguments ["—without", "development"]
Yury
Какая версия бандлера?
Yury
вообще хз, это кусок боевого докерфайла
Yury
должно работать
нꙺ
сорян
нꙺ
в скрипт пробрался флаг --force-rm
нꙺ
ясненько
нꙺ
все, по-моему я выгорел
нꙺ
с последним образом ruby:alpine бандлер не ставит thin чет сегодня не мой день походу
нꙺ
thin это рубевый мини-сервер
нꙺ
но я вроде нашел в чем дело
нꙺ
RUN apk add build-base в докер-файле не хватало
нꙺ
однако, здравствуйте
нꙺ
получилось собрать билд и использовать его как базовый on-the-fly в одном единственном compose-файле чудненько )
нꙺ
и без лишних контейнеров, конечно же
нꙺ
ruby-base: build: context: ./base image: my-ruby-base-image
нꙺ
в докер-файлах остальных сервисов делаем FROM: my-ruby-base-image:latest
нꙺ
и в compose-файле сервисам ставим depends_on: - ruby-base чтобы базовый собирался первым
нꙺ
чего только не придумаешь чтобы доки не читать )))
нꙺ
у меня в самом конце скриптик исполняется, который в числе прочего делает yes | docker system prune
нꙺ
грязный хак, конечно, но для моей задачи норм
Arkadiy
Добрый вечер) Подскажите пожалуйста, как сделать внутреннюю сеть между хостом и контейнерами? Нужно чтобы хост так же был полноценным участником этой сети и видел контейнеры и наоборот
Arkadiy
Внутренняя сеть между контейнерами работает, но хост получается аутсайдером
Arkadiy
Про внешнюю сеть и проброс вкурсе, но нужна именно внутренняя сеть
Alexei
macvlan
Arkadiy
ну я осознал для себя, что при порт форварде контейнер все равно остается в сети и другие контейнеры его видят
Arkadiy
ну вроде
Arkadiy
в каком плане?)
Arkadiy
-p 1234:1234 - вся настройка
Arkadiy
да
Arkadiy
я просто сам создал себе проблему, которой не было
Arkadiy
зато разобрался, как docker-machine работает)
Arkadiy
пока решал проблему
Arkadiy
ну это понятно, просто я был уверен, что после этого контейнер будет за натом хоста и перестанет быть частью сети
Arkadiy
короче все работает и это хорошо)
Arkadiy
спасибо)
Alex
Привет ребят. Не могу сообразить. Я поднял контейнер с bind сервером и примонтировал в контейнер каталог где будут конфиги. Каталог сейчас пустой, примонтировал туда, где bind по умолчанию хранит конфиги. В итоге каталог в контейнере опустел. Как перебросить файлы из контейнера на хост после запуска контейнера?
Alex
docker-compose volumes: /path/config:/etc/bind/
Alex
Нужно в контейнере создать файл, чтобы он оказался на хосте. А в момент запуска контейнера, докер видит, что каталог на хосте пустой и тупо затирает содержимое каталога в контейнере...
Arkadiy
Или тебе именно синхронизацию?
Alexei
volumes: - "./app:/opt/app"
Alex
только . и ..
Alex
Не. Синхронизация работает и так. Мне нужно получить из контейнера дефолтные конфиги службы. Для этого мне приходится запускать контейнер без volumes. Забирать дефолтные конфиги на хост (например через cat).
Alex
Если примонтировать каталог с хоста, то файлы в контейнере затираются
Alex
Неужели никто не сталкивался? :)
Эмиль
делай volume)
Alex
делай volume)
Что вы имеете в виду?
Alex
На всякий случай version: "3" services: dns: build: ./ image: bind #volumes: # - ./config:/etc/bind/ ports: - 53:53
Эмиль
прикрепи контейнер к volume - там конфиги твои и создадутся
Alex
Так файлы на хосте есть
Alex
version: "3" services: dns: build: ./ image: bind volumes: - ./config:/etc/bind/ ports: - 53:53 так, затираются
Эмиль
пусть хранит файлы на volume
Эмиль
volume то не затирается
Alex
Эмиль
При этом файлы в контейнере исчезнут
а зачем тебе эти файлы в контейнере??
Alex
а зачем тебе эти файлы в контейнере??
А где я сказал, что они мне не нужны? Я сказал, что мне эти файлы нужны на хосте
Alex
Если я подключаю через volumes нужный каталог, то файлы в контейнере перезатираются файлами с хоста. В моем случае каталог на хосте пустой, что влечет к удалению всех файлов из каталога в контейнере
Эмиль
сделай чтобы хост юзал конфиги в volume. если уничтожишь контейнер - то конфиги останутся. если тебе принципиально надо, чтобы эти конфиги были и в текущем хосте - то сделай по крону каждую секунду копировать конфиги за volume в твой текущий контейнер