@ru_docker

Страница 569 из 610
Sergey
01.04.2019
06:10:16
Roman
01.04.2019
07:29:50
https://t.me/aws_ru
спасибо

Alex
02.04.2019
08:23:38
Привет! Подскажите пожалуйста, как в docker-compose связать сервис и БД, если дефолтный порт 5432 занят уже другой БД?

Google
Andrey
02.04.2019
08:25:06
дефолтный порт чего? контейнерам не обязательно, а то и вредно на портв хоста обращаться

Alex
02.04.2019
08:25:46
Угу, теорию понимаю Но не знаю как на практике реализовать в docker-compose правильный проброс портов я совсем начинающий :)

Andrey
02.04.2019
08:27:16
так в любом первом примере с парой контейнеров эта задача описана, ну показывайте уж тогда что на... там у вас, глядишь кто не заленится

Alex
02.04.2019
08:31:56
так в любом первом примере с парой контейнеров эта задача описана, ну показывайте уж тогда что на... там у вас, глядишь кто не заленится
угу, примеры видел, но как-то не ладится, увы ( тут уже наверное "все неправильно", но на сейчас конфига такая https://gist.github.com/AlexDemian/a5727c25466fd280848e0dfa4d81fc42

Andrey
02.04.2019
08:33:23
ну так а где link то?

Alex
02.04.2019
08:35:13
мне надо связать контейнеры между собой, пробросить так или иначе порты: web к db и наоборот web к nginx и наоборот при этом 5432 на хосте занят

Nibbler
02.04.2019
08:35:59
links: db

ports: "5433:5432"

Artem
02.04.2019
08:37:30
ну сделай сеть отдельную и занимай какие хочешь порты и линкуй контейнеры

Nibbler
02.04.2019
08:37:51
ну сделай сеть отдельную и занимай какие хочешь порты и линкуй контейнеры
какую сеть? ничего что докер сам делает сеть внутри compose?

Artem
02.04.2019
08:38:05
я про это и говорю

Google
Artem
02.04.2019
08:38:37
а-ля networks: app-network: driver: bridge

Andrey
02.04.2019
08:39:06
да ничего там отдельно делать не надо, такое оно само

Artem
02.04.2019
08:39:46
само оно забиндить localhost на 5432 захочет (который занят)

Andrey
02.04.2019
08:40:27
да не надо никуда ничего биндить

Artem
02.04.2019
08:42:03
ойвсе

Alex
02.04.2019
08:42:52
ports: "5433:5432"
это же для web, правильно? веб будет юзать 5433 порт у хоста (рассуждаю) а как проброс сделать от контейнера бд на 5433 порт хоста? если продублировать директиву в db-сервис, то вылетит ошибка, типа порт уже занят

а-ля networks: app-network: driver: bridge
спасибо, почитаю, глядишь и все получится организовать

Artem
02.04.2019
08:43:41
links не забудь

Alex
02.04.2019
08:44:25
Кстати, про примеры version: "3" services: web: build: . ports: - "8000:8000" db: image: postgres ports: - "8001:5432" отсюда https://docs.docker.com/compose/networking/

И я не врубаюсь почему web должен ловить что-то на 8001 порте хоста, если это явно не объявлено

А "Within the web container, your connection string to db would look like postgres://db:5432, and from the host machine, the connection string would look like postgres://{DOCKER_IP}:8001."

Alex
02.04.2019
09:50:58
ports: "5433:5432"
все, пазл сложился :) я так и не понял почему вы порты указали но вы правильно сказали - докер создает внутреннею сетку и этого вполне достаточно все что мне нужно было сверх того понять, что этом случае db из сервиса/контейнера web будет доступна по адресу service_name(в моем случае - "db"):port

И в этом случае порты хоста вообще не задеваются никак, проброс идет по внутренней докер-сетке Спасибо!

Maksim
02.04.2019
10:46:24
Посмотрел я вариант с использованием nginx ssl passthru он возможен только для tcp

daysandbox_bot
02.04.2019
22:52:06
Removed msg from Артем Pen. Reason: new user + external link

Maksim
03.04.2019
09:00:17
ребята, подскажи мне разницу между docker 17 и 18

Roman
03.04.2019
09:04:28
ребята, подскажи мне разницу между docker 17 и 18
в 18 есть новые фичи и пофикшены баги не знаю чего ты ожидаешь в ответ на такой вопрос)

Google
Roman
03.04.2019
09:04:31
почитай чейнджлоги

Maksim
03.04.2019
09:04:53
я хочу для себе понять какая версия является стабильной для прода

а то есть понимание что допустим ubuntu 18.04 это LTS, а 18.10 нет

Roman
03.04.2019
09:05:27
последняя)

в докере нет лтс

Maksim
03.04.2019
09:05:47
буду знать

Artur
03.04.2019
10:08:25
Всем привет, только начал изучать докер, есть вопрос: Если БД на проде работает, и туда все данные закидываются и я захочу к примеру перенести приложение на другой сервер, файлы хранятся под системой контроля версии git. Мне нужно в git данные БД комитить или нет?

Просто докер же все данные БД хранит в папке приложения, вот этот момент непонятен мне пока.

Erich
03.04.2019
10:26:03
Всем привет, только начал изучать докер, есть вопрос: Если БД на проде работает, и туда все данные закидываются и я захочу к примеру перенести приложение на другой сервер, файлы хранятся под системой контроля версии git. Мне нужно в git данные БД комитить или нет?
БД в гите не храни, по дефолту все данные контейнера стираются, поэтому нужен volume. Если он смонтирован в папку проекта, то исключи его через .gitignore При переносе проекта копируешь тот волюм на новую машину в то же место (в папке проекта)

Artur
03.04.2019
11:13:50
;)
03.04.2019
19:51:26
version: '3.7' services: node1: image: base:image volumes: - "./test:/test" working_dir: /test node2: image: base:image2 volumes: - "./:/mnt" depends_on: - node1 working_dir: /mnt stdin_open: true

Вопрос почему файлы из директории test не монтируются?

;)
03.04.2019
19:52:33
Т.е. на хосте в директории test есть файлы, я монтирую в контейнер, но там файлы не отображаются

AstraSerg
03.04.2019
20:23:57
Т.е. на хосте в директории test есть файлы, я монтирую в контейнер, но там файлы не отображаются
Покажите find . в директории с докеркомпоз файлом, если не секрет.

Evgeniy
03.04.2019
20:26:05
а как ты проверил что они не смонтировались?

;)
03.04.2019
20:35:08
Ну вообщето они смонтировались, смотрел через inspect

Но файлов там почему то нет

Dan
04.04.2019
08:12:39
Итак. Есть контейнер с mariadb. Два волюма: собственно папка с базой, и папка для апдейтов. В докерфайле entrypoint'ом указан баш-скрипт, принимающий параметром cmd — mysqld. В скрипте, соответственно, есть некоторая магия для инициализации db, и прочего мейнтейна. Однако, там прописано основное условие — если if [ ! - "/var/lib/mysql" ]; then и так далее. И всё работает, если это первый запуск: база создаётся, все условия отрабатывают. Подключение через сокет, все дела. А мне надо бы сделать вот что: если я запускаю контейнер, и вдруг в папке с обновлениями что-то есть, то прежде чем запускать сервис, надо бы импортировать эти записи в базу. Условия прописаны, всё срабатывает, но я не понимаю напрочь, почему он не хочет соединяться с сокетом. 2002 ошибка и всё тут. Ткните меня пожалуйста. Возможно, проблема не сколько в докере, сколько в баше или env, но я перепроверил все возможные вариации — к сокету не цепляет. p.s. гугл вежливо и тактично молчит, потому что такого как делаю я — мало кто додумается делать. и предлагает перезагрузить сервис mysqld, тогда всё будет хорошо. Но...

Это не вопрос, это я хвастаюсь :)

Maxim
04.04.2019
09:48:40
Итак. Есть контейнер с mariadb. Два волюма: собственно папка с базой, и папка для апдейтов. В докерфайле entrypoint'ом указан баш-скрипт, принимающий параметром cmd — mysqld. В скрипте, соответственно, есть некоторая магия для инициализации db, и прочего мейнтейна. Однако, там прописано основное условие — если if [ ! - "/var/lib/mysql" ]; then и так далее. И всё работает, если это первый запуск: база создаётся, все условия отрабатывают. Подключение через сокет, все дела. А мне надо бы сделать вот что: если я запускаю контейнер, и вдруг в папке с обновлениями что-то есть, то прежде чем запускать сервис, надо бы импортировать эти записи в базу. Условия прописаны, всё срабатывает, но я не понимаю напрочь, почему он не хочет соединяться с сокетом. 2002 ошибка и всё тут. Ткните меня пожалуйста. Возможно, проблема не сколько в докере, сколько в баше или env, но я перепроверил все возможные вариации — к сокету не цепляет. p.s. гугл вежливо и тактично молчит, потому что такого как делаю я — мало кто додумается делать. и предлагает перезагрузить сервис mysqld, тогда всё будет хорошо. Но...
А что за директория такая с обновлениями? Что это за обновления?

Google
Dan
04.04.2019
09:54:52
А что за директория такая с обновлениями? Что это за обновления?
Патчи для базы. Набор sql файлов со всякими ALTER TABLE :)

Maxim
04.04.2019
09:57:41
Патчи для базы. Набор sql файлов со всякими ALTER TABLE :)
А разве это не должно применяться к работающей бд?

Admin
ERROR: S client not available

Maksim
04.04.2019
09:57:53
нет

это по факту initdb

Dan
04.04.2019
09:59:12
Собственно, проблему уже обнаружил, внимательность — наше всё. В баш-скрипте была неправильная последовательность. Сначала вызов, а потом определение переменной сокета :)

Maxim
04.04.2019
10:00:51
это по факту initdb
initdb выполняется только раз при первом старте и только так и должно быть, все остальное должно применяться к рабочей бд

Grigory
04.04.2019
10:56:41
Ребята, а есть возможность пробросить из docker-compose.yml переменную внутрь Dockerfile когда запускаешь docker-compose up --build ?

Dan
04.04.2019
11:00:26
А, да, можно через args кстати

В docker-compose указываешь списком, а в Dockerfile через директиву ARG

build: context: . args: MYSQL_ROOT_PASSWORD: password ENV: test dockerfile: ARG MYSQL_ROOT_PASSWORD ARG ENV ADD ${ENV}/data.xml /data/

Maxim
04.04.2019
11:04:30
build: context: . args: MYSQL_ROOT_PASSWORD: password ENV: test dockerfile: ARG MYSQL_ROOT_PASSWORD ARG ENV ADD ${ENV}/data.xml /data/
Так точно. Только старайтесь не использовать ENV в названиях atgs и env

Grigory
04.04.2019
11:05:10
А через env_file не получится никак?

Dan
04.04.2019
11:06:29
Читайте документацию :)

Там всё есть

Grigory
04.04.2019
11:07:26
Получилось, спасибо

Google
Maxim
04.04.2019
11:09:13
А через env_file не получится никак?
Через env_file переменные будут доступны только в контейнере, для Dockerfile используйте args они доступны при build

Grigory
04.04.2019
11:09:31
ARG APP_DOMAIN ENV APP_DOMAIN=$APP_DOMAIN

вот так доступны стали

Maxim
04.04.2019
11:21:41
ARG APP_DOMAIN ENV APP_DOMAIN=$APP_DOMAIN
Вот это уже то что нужно!

Grigory
04.04.2019
11:23:05
Настроил запуск nginx с генерируемым конфигом из env, я счастлив

Maxim
04.04.2019
12:13:49
Настроил запуск nginx с генерируемым конфигом из env, я счастлив
кидай пример как передаются параметры в конфиг

Grigory
04.04.2019
12:17:46
docker-compose.yml web: image: docker.test/vokamut/nginx:latest restart: always depends_on: - app links: - app volumes: - ${PWD}/certs:/etc/nginx/ssl ports: - 80:80 - 443:443 networks: - docker-net env_file: .env.prod Dockerfile: FROM nginx:1.15-alpine RUN apk --no-cache add gettext COPY docker/vhost.conf /etc/nginx/nginx.conf.template COPY public /var/www/public ARG APP_DOMAIN ENV APP_DOMAIN=$APP_DOMAIN CMD ["/bin/sh", "-c", "/usr/bin/envsubst '$$APP_DOMAIN' < /etc/nginx/nginx.conf.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"] vhost.conf server { server_name ${APP_DOMAIN}; listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/ssl/${APP_DOMAIN}.crt; ssl_certificate_key /etc/nginx/ssl/${APP_DOMAIN}.key; ...

Grigory
04.04.2019
12:20:07
разве? CMD запускается при старте же и подтягивает env при билде и простом запуске же

Alex
04.04.2019
12:23:48
docker-compose.yml web: image: docker.test/vokamut/nginx:latest restart: always depends_on: - app links: - app volumes: - ${PWD}/certs:/etc/nginx/ssl ports: - 80:80 - 443:443 networks: - docker-net env_file: .env.prod Dockerfile: FROM nginx:1.15-alpine RUN apk --no-cache add gettext COPY docker/vhost.conf /etc/nginx/nginx.conf.template COPY public /var/www/public ARG APP_DOMAIN ENV APP_DOMAIN=$APP_DOMAIN CMD ["/bin/sh", "-c", "/usr/bin/envsubst '$$APP_DOMAIN' < /etc/nginx/nginx.conf.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"] vhost.conf server { server_name ${APP_DOMAIN}; listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/ssl/${APP_DOMAIN}.crt; ssl_certificate_key /etc/nginx/ssl/${APP_DOMAIN}.key; ...
О, расскажите пожалуйста про ключи подробнее, я как раз возился сегодня; Запустил, но срок у ключа - несколько месяцев Находил гайд: https://medium.com/@pentacent/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71 Он всем хорош, кроме одного момента, о котором автор написал: При запуске nginx требует сгенеренный ключ, его как бы еще нет И типа надо самому вначале любой ключ подставить либо заюзать скриптик автора гайда, что как по мне и то херня, и то херня

Grigory
04.04.2019
12:24:33
А потом запускать docker-compose с хостовыми переменными окружения? Зачем? если есть .env файл

Страница 569 из 610