Anton
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
ни локала нифига. Раньше работало ))
Ilya
Boris 🦍
Oleg
+
Ilya
db:3306 нужно
то есть получается сервак подпиливать под компоуз
Oleg
Ilya
я прост в докер не очень пока еще
Oleg
В в докере экспоуз
Kirill
Oleg
В компоузе портс
Kirill
есть еще простой, но неправильный вариант - убрать сетевую изоляцию полностью
Ilya
Ладно мужики, спасибо великое!
Ilya
Ща в исходники полез - капец предусмотрительно
os.Getenv("DB_PORT_3306_TCP_ADDR") + ":3306"
Ilya
поэтому ничего и не показывало - переменная то не указана
Kirill
тогда всё просто - добавь ENV прямо в компоузе
Ilya
то есть я в env прост опишу db и он сам ip подтянет?
Kirill
Kirill
кажись так
Ilya
ну я это и имел ввиду)
Kirill
должен подтянуть
Oleg
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
Kirill
тогда там будет ссылка вида tcp://1.2.3.4
Kirill
по дефолту
Kirill
а не, именно IP будет
Kirill
тогда банальнго линка должно хватать?
Anonymous
Я пишу строку в docker-compose
volumes:
./dir:/dir
Что происходит, когда контейнер маунтит путь?
Физически файлы копирует или что-то вроде ссылки на директорию?
И еще, если несколько контейнеров работает с одной директорией, понимают ли контейнеры что трудятся над одним делом.
Пример:
nginx монтирует папку с неким сайтом и php-fpm работает с тойже папкой.
Kirill
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
George
Касательно pid namespaces - ты их и так шарить можешь, но это не про енвы
Ilya
Жорик, друг мой. Там чуток повыше отмотай
Ilya
может твой взгляд будет свежее
Ilya
os.Getenv("DB_PORT_3306_TCP_ADDR") + ":3306"
Ilya
вот эту переменную хотелось бы получить, чтобы сервак не хардкодить
George
Ну, в каждый контейнер добавлять env_file и на файл указывать, который на диске
George
Понятно, что это не динамически.
George
Но докер вообще не про динамику
Ilya
А айпи разве не от балды присваивается при старте контейнера?
Ilya
я к тому что конетйнеры в собственной сети же плавают постоянно
Ilya
и к ним образаться по именам надо
George
George
Ilya
Да я это для примера с динамикой. Ну вот чоткий вопрос - как серваку в одном контейнере получить айпи контейнера с базой?
su
Ilya
@gecube видишь ли links deprecated, надо пользовать networks (по дефолту создается, не суть). Но нетворкс не даёт пробрасывать переменные
George