ARCHANGEL 🇺🇦
Я что-то устал от тебя, Антон
Anatoly
Замутил я себе суперконтейнер из образа ubuntu в который установил apache, mysql and php. Все это в Dockerfile. После запустка docker build . Всё ок. Но потом при запуске контейнера docker run ubuntu он запустается и тут же гаснет. Как сделать, чтобы он работал постоянно?
Anatoly
А, всё. Вроде разобрался. Надо примерно так делать docker run -i -t -p 4444:80 ubuntu:18.04 /bin/bash
Ilya
Добрый день! Столкнулся с проблемой при docker-compose. Раньше запускал вручную два контейнера - один с серваком на go, второй с mysql. мускуль —name=db -p 3306:3306. Го —link=db
Ilya
теперь при docker-compose up го не видит базу
Kirill
дампи сам компоуз сюда
Ilya
через Mysql Workbench подключаюсь без проблем к базу
Kirill
у меня есть подозрение что оно хочет через сокет подключится
Ilya
дампи сам компоуз сюда
что дампить? Вывод?
Kirill
Ilya
ща
Ilya
version: '3' services: mahom: build: ./mahom ports: - 9000:9000 - 9001:9001 restart: unless-stopped depends_on: - db links: - db db: container_name: "db" image: mysql/mysql-server ports: - 3306:3306 expose: - 3306 volumes: - ./mysql-data/mysql:/var/lib/mysql restart: always
Ilya
expose ни на что не влияет, без него тоже работает
Oleg
В настройках го сервака какой хост используется?
Ilya
(:3306)
Serghei
правило хорошего тона - указывать expose в dockerfile
Ilya
ни локала нифига. Раньше работало ))
Boris 🦍
(:3306)
db:3306 нужно
Oleg
+
Ilya
db:3306 нужно
то есть получается сервак подпиливать под компоуз
Ilya
правило хорошего тона - указывать expose в dockerfile
а в докерфайл как указать если у меня из имаджа созадется?
Ilya
я прост в докер не очень пока еще
Oleg
В в докере экспоуз
Kirill
а в докерфайл как указать если у меня из имаджа созадется?
если ты никак не выносил это в переменные, то никак
Oleg
В компоузе портс
Kirill
есть еще простой, но неправильный вариант - убрать сетевую изоляцию полностью
Serghei
то есть получается сервак подпиливать под компоуз
Скорее не под композ, а под работу в облачной среде и сервис дискавери :)
Ilya
Ладно мужики, спасибо великое!
Ilya
Ща в исходники полез - капец предусмотрительно os.Getenv("DB_PORT_3306_TCP_ADDR") + ":3306"
Ilya
поэтому ничего и не показывало - переменная то не указана
Kirill
тогда всё просто - добавь ENV прямо в компоузе
Ilya
то есть я в env прост опишу db и он сам ip подтянет?
Kirill
кажись так
Ilya
ну я это и имел ввиду)
Kirill
должен подтянуть
Ilya
services.mahom.environment contains {"DB_PORT_3306_TCP_ADDR": "db"}, which is an invalid type, it should be a string
Ilya
но не обязан)
Serghei
Вы что то путаете ребята )
Serghei
Эти переменные создаются автоматически
Kirill
тогда там будет ссылка вида tcp://1.2.3.4
Kirill
по дефолту
Kirill
а не, именно IP будет
Kirill
тогда банальнго линка должно хватать?
Anonymous
Я пишу строку в docker-compose volumes: ./dir:/dir Что происходит, когда контейнер маунтит путь? Физически файлы копирует или что-то вроде ссылки на директорию? И еще, если несколько контейнеров работает с одной директорией, понимают ли контейнеры что трудятся над одним делом. Пример: nginx монтирует папку с неким сайтом и php-fpm работает с тойже папкой.
Kirill
нет, не понимают
Anonymous
И как мне жить дальше?
Kirill
с трудностями
Anonymous
Это хорошо
Anonymous
Как подружить контейнеры?
Ilya
https://docs.docker.com/compose/environment-variables/ However, these variables are deprecated. Use the link alias as a hostname instead. в самом низу
Ilya
One feature that user-defined networks do not support that you can do with --link is sharing environmental variables between containers
Ilya
вот чо они меня бесят то )
Ilya
задеприкейтили фичу, альтернатив не дали
George
Касательно pid namespaces - ты их и так шарить можешь, но это не про енвы
George
задеприкейтили фичу, альтернатив не дали
Обратная совместимость? Не, не слышал 😳
Ilya
Жорик, друг мой. Там чуток повыше отмотай
Ilya
может твой взгляд будет свежее
Ilya
os.Getenv("DB_PORT_3306_TCP_ADDR") + ":3306"
Ilya
вот эту переменную хотелось бы получить, чтобы сервак не хардкодить
George
Ну, в каждый контейнер добавлять env_file и на файл указывать, который на диске
George
Понятно, что это не динамически.
George
Но докер вообще не про динамику
Ilya
А айпи разве не от балды присваивается при старте контейнера?
Ilya
я к тому что конетйнеры в собственной сети же плавают постоянно
Ilya
и к ним образаться по именам надо
su
А айпи разве не от балды присваивается при старте контейнера?
а как тогда свою сеть задавать если совсем от балды. нет по маске сети
Ilya
Да я это для примера с динамикой. Ну вот чоткий вопрос - как серваку в одном контейнере получить айпи контейнера с базой?
Ilya
@gecube видишь ли links deprecated, надо пользовать networks (по дефолту создается, не суть). Но нетворкс не даёт пробрасывать переменные