
Aion
14.02.2018
11:05:37
сначала решите- что есть ваш артифакт
в идеале артифакт в концеплции контейнеров - контейнер

Andrey
14.02.2018
11:07:07

Aion
14.02.2018
11:07:27
в идеале - нет

Google

Aion
14.02.2018
11:07:34
для начала - возможно

Andrey
14.02.2018
11:07:54
А как в идеале? Архивы?

Aion
14.02.2018
11:08:19
вы должны стремиться к тому, чтобы ваш backend был образом: <proj_name>_backend:latest
и через docker-registry деплоиться на стенд

Andrey
14.02.2018
11:09:31
Да, я вроде как этого и хочу. Просто не совсем понимаю что класть в этот образ кроме кода. Пыха отдельный контейнер, nginx тоже.

Aion
14.02.2018
11:09:44
нет
контейнер = процесс
какой процесс выпоняет ваш код?
для java = jre
для js = вебсервер (apache2, nginx...)
для пхп = php-fpm/ новый nginx

Andrey
14.02.2018
11:10:58

Aion
14.02.2018
11:11:15
ну вот и экврика у вас есть контейнер с php-fpm

Google

Andrey
14.02.2018
11:11:46
Вот вроде как и да, а вроде как и нет. Если у меня будет 10 сайтов, зачем плодить пыху?

Aion
14.02.2018
11:12:15
потому что это 10 сервисов
модульность как соблюдать?
разные версии fpm как использовать?

Andrey
14.02.2018
11:13:04
ну да. Зачем мне 10 процессов пыхи если все сайты могут работать на одной

Aion
14.02.2018
11:13:28
зачем вам виртуалки и контейнеры? Когда можно все запустить на одной железке?

Сергей
14.02.2018
11:13:34
зачем мне 10 процессов пыхи, если можно просто не юзать пыху

Aion
14.02.2018
11:13:50

Andrey
14.02.2018
11:14:00

Сергей
14.02.2018
11:14:10
ыы

Andrey
14.02.2018
11:14:39

Aion
14.02.2018
11:15:01
у пайтона есть virt-env
у java есть спринг
катай - не хочу

Andrey
14.02.2018
11:15:39

Aion
14.02.2018
11:16:54
еще раз - в идеале один процесс - один контейнер
один сайт = один процесс
а так можно и слона как мартышку на дерево втащить
но зачем?

Google

Andrey
14.02.2018
11:18:41
Да согласен в принципе. Вот и хочу понять, надо оно мне или нет. Понятно что тем же ансиблом это все можно зарешать.
Вот смотрите, один сайт = один процесс. Но сайт состоит из фронта и бека. Которые собираются по разному и лежат в разных местах. По нормальному мне бы надо фронт монтировать напрямую в nginx, а бек в пыху. Это ок?

Aion
14.02.2018
11:22:50
сервис мб
но не сайт


Николай
14.02.2018
11:24:55
Ребят, всем привет.
Скажите, а как по канонам докера собирать php сайтики?
По сути какие есть компоненты:
1) PHP код бека
2) html/css/js и вот это вот всё для фронта
3) php-fpm
4) nginx
5) База
Исходя из логики 1 процесс 1 контейнер, мне надо:
1) Volume для кода
2) Контейнер с php-fpm
3) Контейнер с nginx
4) Контейнер с базой
И вроде как все логично, но не редко вижу когда php суют вместе с кодом в один контейнер. А иногда еще и базу к ним селят. Хотелось бы мнения послушать.
я вот тоже неверно сначала трактовал "1 процесс = 1 контейнер", пытался распихать php-fpm, nginx, app в разные контейнеры
Но суть в том что я собираю сразу несколько микросервисов.
api-gateway
|--service1
|--service2
|--service3
|--serviceN
Пытаясь собрать все это с минимально атомарной единицей, думал что меня заберут в дурку.
В итоге допер что 1 целый микросервис , это 1 контейнер, чтобы он мог работать полностью автономно. Фронт так же отдельно как самодостаточный сервис.
Наверно в архитектуре тут надо придерживатся такой логики: Строить микросервисы так, чтобы удалив любой, все остальные могли продолжать работать.


Aion
14.02.2018
11:25:43
как мне например разделить проект таким образом, чтобы 20 разработчиков могли независимо пилить 20 разных его кусочков

Николай
14.02.2018
11:26:11
на сайт это ложится ровно точно так же

Andrey
14.02.2018
11:27:44
По такой логике я пихожу к выводу что нужно 2 контейнера:
1) nginx + собранный фронт
2) nginx + phpfpm + собранный бек
база не в счет.
Но это ж нужно будет тогда сверху накрывать еще одним nginx чтобы раскидывать запросы между фронтом и беком. Получится 3 отдельных nginx. Это разве ок?

Николай
14.02.2018
11:28:08
да

Aion
14.02.2018
11:28:17
нет

Николай
14.02.2018
11:28:26
))

Aion
14.02.2018
11:28:32
php-fpm без nginx отдельный образ

Николай
14.02.2018
11:28:52
принцип ларадока?

Andrey
14.02.2018
11:29:23
Мне почему то всегда казалось что собирать код и какой нибудь fpm в одном контейнере это зло. Видимо я не прав

Николай
14.02.2018
11:31:19
так критично экономить на легком nginx? может лучше использовать nginx везде, но собирать контейнер на alpine вместо например ubuntu?

Andrey
14.02.2018
11:31:59

Google

Andrey
14.02.2018
11:32:39
Хотя если включить зануда mode, то можно сказать что в некоторых ситуациях пачка nginx может вносить существенную задержку. Но не будем об этом сейчас, это оффтоп дикий


Oleg ?
14.02.2018
12:06:25
Ребзя, помогите с траефиком
не залетают чтото туда хосты
вот композ траефика
version: '3'
services:
traefik:
image: traefik:1.5-alpine
restart: always
container_name: traefik
networks:
- proxy
ports:
- "80:80"
- "443:443"
- "8080:8080"
labels:
- traefik.frontend.rule=Host:test-traefik.example.com
- traefik.port=8080
volumes:
- ./traefik:/etc/traefik/
- /var/run/docker.sock:/var/run/docker.sock
networks:
proxy:
external: true
все ок поднимается, вижу веб на 8080
вот поднимаю тестовый нджинкс
version: '3'
networks:
proxy:
external: true
services:
nginx-test:
image: nginxdemos/hello
restart: always
container_name: nginx-test
networks:
- proxy
labels:
- traefik.backend=nginx-test
- traefik.frontend.rule=Host:tests.example.com
- traefik.docker.network=proxy
- traefik.port=80
ну и как бы он не заходит
дашборд пуст

Kamil
14.02.2018
12:10:55
А в третьей версии можно установку пакетов добавлять в компоуз?

Admin
ERROR: S client not available

Aleksandr
14.02.2018
12:13:44
народ, а где я продалбываюсь?
php:
image: php:7.0-fpm
restart: always
ports:
- 9000:9000
command: docker-php-ext-install zip
volumes:
- ./:/code
но в итоге вываливается с exit code 1 и в цикле пытается установить расширение

Oleg
14.02.2018
12:14:58

Aleksandr
14.02.2018
12:15:26
без команды все хорошо
но как установить расширение?

Sergey
14.02.2018
12:15:45

Oleg
14.02.2018
12:15:56

Oleg ?
14.02.2018
12:16:00

Sergey
14.02.2018
12:16:57
пуст в том смысле, что там нет вообще ничего, или нет nginx-бэка и фронта?

Aleksandr
14.02.2018
12:17:10

Oleg ?
14.02.2018
12:17:17
нету nginx бэка и фронта

Sergey
14.02.2018
12:18:50
хм... может конечно это тупость, вроде в докерфайле есть необходимые инструкции, но возможно надо для nginx явно указать порт expose 80?

Google

Oleg
14.02.2018
12:18:53
в конфиге же написано
zip
Ок, перефразирую. Расширение к чему ты пыташься установить. У тебя докер не может выполнить в контейнере твой command.

Aleksandr
14.02.2018
12:19:05
к php

Oleg ?
14.02.2018
12:19:33

Sergey
14.02.2018
12:20:06
тогда надо логи трэфика

Oleg
14.02.2018
12:20:09
к php
sudo: apt-get update && apt-get install php-zip ?!

Oleg ?
14.02.2018
12:20:35
ничо нету

Sergey
14.02.2018
12:20:53
дебаг включен в конфиге?

Oleg ?
14.02.2018
12:21:38
неа
ща включу

Aleksandr
14.02.2018
12:22:17

Oleg ?
14.02.2018
12:24:10
в логе только time="2018-02-14T12:23:43Z" level=debug msg="Basic auth success..."
оба хоста вижу в одной сети
"Containers": {
"838989a60cbeb40a6f880a4c4abe5916f6603657e2cc2bc2bea9e33a866cfdaa": {
"Name": "nginx-test",
"EndpointID": "22db346a8fd23be488e4ec060f7dd47f061471d304b7ca4ae9ae990073440e0d",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"e59b695b5e4f4e3cd04f31a583f2299768423e4b23e8323162ce0cf417f2f05f": {
"Name": "traefik",
"EndpointID": "840c694e758ed94800a3011d57658dbef1df14ac615ce7b37ef964c51efd1e4f",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""

Oleg
14.02.2018
12:25:23

Sergey
14.02.2018
12:26:35
@flomsk хм, а контейнер с nginx здоров?

Aleksandr
14.02.2018
12:27:13

Oleg ?
14.02.2018
12:27:56
Sergey да, ща отдельно запустил, есть подозрение на версию траефик

Sergey
14.02.2018
12:29:34
у меня та же версия трэфика, работает без нареканий

Oleg ?
14.02.2018
12:30:38
хм

Sergey
14.02.2018
12:31:16
точнее, у меня traefik:alpine, но они вроде идентичны

Oleg ?
14.02.2018
12:31:54
вот TOML
logLevel = "DEBUG"
defaultEntryPoints = ["http", "https"]
[web]
address = ":8080"
[web.auth.basic]
users = ["admin:ххх"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
email = "an@example.org"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
onDemand = false