mitsucheki
Дмитрий
покажи как создал контейнеры.
version: "2"
services:
www:
build: .
ports:
- "8001:80"
volumes:
- ./project:/var/www/notification
- ./apache2:/etc/apache2
links:
- db
networks:
- default
db:
image: mysql:5.7
entrypoint: ['/entrypoint.sh', '--character-set-server=utf8', '--collation-server=utf8_general_ci']
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: notifications
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- ./dump:/docker-entrypoint-initdb.d
- persistent:/var/lib/mysql
networks:
- default
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.6
links:
- db:db
ports:
- 8000:80
environment:
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
persistent:
mitsucheki
Дмитрий
mitsucheki
V 🏴☠️
Не тому походу написал
Дмитрий
О, сработало, спасибо!
Дмитрий
Еще вопрос, как избавиться от порта?
Дмитрий
Чтобы по прямому адресу работало
Nurlan
Nurlan
www:
build: .
ports:
- "80:80"
Дмитрий
Спасибо!
Andrey
С башем проще docker exec -it idcontener bash
Andrey
А вообще поставь ранчера и через него билдь
Andrey
Проще
Andrey
Товарищи, сдается мне вопрос частый и банальный, но что-то не найду ответа( При shared volume между контейнерами в docker-compose, как указать конкретно, из какого контейнера надо брать даныне? ну если шаринг между app1 app2 и app3, чтобы там данные из app1 гарантировано лежали?
Анатолий
shared volume это "диск" подключенный ко всем твоим контейнерам, куда ты его подключил
Andrey
может неверно выражаюсь.
Andrey
volumes:
src:
Анатолий
нужен контекст, что пытаешься сделать и чего хочешь получить?
Andrey
сдается мне, я концепцию неверно понял) это можно использовать как проброс папки с одно контейнера в другие?
Andrey
есть контейнер с приложением, есть nginx Надо в nginx пробросить статику
Анатолий
положи статику по пути который подключаешь и она будет доступна в обоих контейнерах
Andrey
Он она уже в контейнере с приложением. Что значит "положить по пути"?
Andrey
То есть, есть два контейнера. на хостовой машине нет ничего
Анатолий
а где volume?
Andrey
Давай сначала. Я думал, что указав вот так (как выше) volume, я могу сделать следующее: в этот волюм попадет папка из контейнера app и я смогу ее прокинуть в контейнер nginx (то есть между контейнерами, без участия хоста)
Andrey
Вот такую задачу можно решить?
Анатолий
$ docker volume inspect my-vol
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]
Bohdan
Bohdan
вон выше кинули
Эмин
во второй версии была такая директива volumes_from
Andrey
а, ок. Пусть присутствует, я уже понял, что ошибся в предположениях
Анатолий
это общее место, оно не весит в воздухе
Эмин
на счет третей версии композа точно не помню
Bohdan
Andrey
ну вот вопрос в том, чтобы гарантировано указать, что в этот волюм данные из контейнера A прокинуться
Анатолий
когда ты добавляешь volume в контейнер - ты указываешь как будет называться папка в контейнере
Andrey
а, то есть в третьей версии нет?
Анатолий
для nginx укажи /var/www/html к примеру и она будет доступна с дефолтного хоста
Анатолий
думаю чтобы не путаться лучше во всех контейнерах одинаковый путь оставить
Andrey
ну смотри, сейчас у меня вот как-то так:
app:
volume:
src:/path
nginx:
volumes:
src:/path
volumes:
src: (не смотрите на отступы, пишу руками)
Bohdan
ну если прокидывать без named volumes - тогда вроде хостовые данные имеют приоритет
Анатолий
чтобы статика была доступна с Nginx - она должна лежать в папке где настроен виртуальный хост
Andrey
и в `src`у меня содержимое контейнера nginx.
Bohdan
Andrey
А, то есть скорее всего при первом запуске на хосте папка создалсь
Анатолий
ну всё в /path будут твои данные
Andrey
и теперь она стала приоритетом?
Bohdan
у меня так
Andrey
Bohdan
и при этом папка даже может не существовать на хосте
Bohdan
я наоборот ушел к такому от прокинутой вольюмами папки)
Andrey
У меня в gitlab ci при сборке приложения сразу и собирает образ nginx со статикой
Bohdan
тем более, что переопределить ее вольюмом можно когда угодно
Анатолий
ну смысл же чтобы не билдить каждый раз образ когда меняется статика?
Andrey
Анатолий
ну так в чем проблема то?
Andrey
мне по хорошем кастомный nginx только для этого и нужен. я бы от него вообще отказать хотел
Andrey
Желание: отказаться от кастомного образа nginx со статикой внутри и использовать (например) nginx официальный и просто статику волюмом в него пробрасывать с контейнера приложения
Эмин
Ребята, мне кажется для прода наоборот образы должны быть без волюмов. Все необходимые данные уже должны быть в образах, в том числе и исходных код приложений и статики. Таким образом можно очень быстро откатывать в случае неудачного релиза.
Andrey
Согласен. У меня сейчас в голове "качели" между подходами
Andrey
Теперь уже склоняюсь к тому, чтобы внутре было все
Эмин
волюмы нужны при разработке
Bohdan
Анатолий
а если у вас статику на проект может загрузить менеджер в любое время??
Анатолий
картинку в новость там или что...
Анатолий
имхо можно поделить статику на 2 части - папку где ничего не меняется - зашивать, папку в которую грузят картинки и т.д. из админки проекта - делать volume, и синхронизировать раз в какое-то время через тот же rsync
Andrey
в принципе вариант, когда у меня при билде приложение на выходе два образа делаются - приложение и nginx - тоже пойдет
Bohdan
ну картинки - это не статика, а ассеты
Bohdan
по уму это вообще на s3 какой надо складывать или подобную штуку
Nurlan
www.minio.io - крутая штука с поддержкой Amazon S3 API может кому интересно будет
Anonymous
Дмитрий
Не понимаю, как при первом запуске контейнера с бд загрузить в неё дамп базы данных в атоматическом режиме, и как потом база будет реагировать, если при каждом запуске будет пытаться примениться дамп. И будут ли где-то храниться данные, которые будут внесены в базу уже в процессе работы контейнера?
Andrey
Anonymous
Я может не совсем понял вопрос. А в чем минус такого подхода? Если тебе надо с двух контейнеров на одном хост5 иметь доступ в одну папку ?
Дмитрий