@docker_ru

Страница 1263 из 1375
Dmitry
31.05.2019
10:21:39
применительно к ангуляру? или про что?
Ты билдишь image с nginx+angular? или что там в нем?

статический сервер- это что?

Alex
31.05.2019
10:22:58
да, именно и в зависимости от того какая это сборка нужно менять сборку приложения ( это про ангуляр) и прокси внутри nginx

Dmitry
31.05.2019
10:23:32
сделай контейнер для билдов: node+angular+..., в него монтируй билд директорию. вторым шагом добавляй dist в контейнер на базе nginx

Google
Dmitry
31.05.2019
10:23:50
в первый можешь еще добавить nginx если хочешь, и юзать его в dev

Alex
31.05.2019
10:24:46
статический сервер- это что?
сервер для раздачи бандлов js, css, и который будет проксить через nginx запросы

Dmitry
31.05.2019
10:24:59
ты имеешь в виду сервер статики?

Andrey ?
31.05.2019
10:25:07
если юзать на одной тачке докер (+ docker compose) и кубернейтес, не будет ли весь этот зверинец конфликтовать?

Dmitry
31.05.2019
10:25:10
и зачем проксить через nginx если ты можешь просто сервить через nginx

Alex
31.05.2019
10:25:58
да, наверное, это называется сервер статики)

сервить через nginx? это как, чего?

Dmitry
31.05.2019
10:28:04
сервить через nginx? это как, чего?
ну, запихнул бандл в docker image, в котором есть nginx, и наружу смотрит порт 8080 от nginx, на котором только твоя статика. nginx быстрее node

Alex
31.05.2019
10:30:42
А запросы к апи проксировать на отдельном node-серваке?

Maxim
31.05.2019
10:33:24
ну, запихнул бандл в docker image, в котором есть nginx, и наружу смотрит порт 8080 от nginx, на котором только твоя статика. nginx быстрее node
Еще можно обрабатывать картинки налету на таком сервере статики nginx, очень удобно и верное решение, коллега, выделять в отдельный сервис статику

George
31.05.2019
10:37:11
Всем привет, подскажите, пожалуйста, как правильно организовать билд и деплой ангуляр-приложения с докером. В простейшем случае - 2 версии приложения - dev и prod. Различаются режимами сборки и обращаются к различным серверам через прокси в nginx, ну и выкатываться будут соответственно на различных серверах. Просто я у себя создал 3 Dockerfile: - Dockerfile.local - Dockerfile.dev - Dockerfile.prod В них различается режим билда приложения на уровне ангуляра (dev и prod сборки), и подсовываются различные конфиги для nginx (в них различаются прокси). Из консоли я могу вызывать команду docker build -t webapp-wms . --file='Dockerfile.dev' и тогда соберется нужный образ. И я думал, что в npm-скрипт можно запихнуть эту команду, вроде: "build-dev-image": "docker build -t webapp-wms-dev . --file='Dockerfile.dev'" , но нет, при вызове npm-скрипта вываливается следующая ошибка unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Users\koolikov.av\Documents\projects\webapp-WMS\'Dockerfile.dev': The system cannot find the file specified. И я могу билдить образ через npm-скрипт, но только если буду удалять расширение на нужном докерфайле .dev, .prod или .local, а это уже сильный колхоз. А хотелось бы просто, запускать билд нужного образа одной командой, которая включала бы в себя : - удаление старого образа - билд нового образа (dev, prod, local) - выставление тэга этому образу для гитлаба - пуш образа с проставленным тэгом в гитлаб В общем, если кому не сложно, подскажите, пожалуйста, с помощью какого инструментария это все проворачивается и как вообще процесс должен быть организован? потому что мой вариант пока явный колхоз
я не понял зачем три докерфайла

Google
George
31.05.2019
10:37:16
в теории можно было одним обойтись

во-первых - мультистейдж во-вторых - можно ARG передавать переменные внутрь контейнера на стадии сборки и в зависимости от этого что-то делать

например, выбирать команду для сборки

George
31.05.2019
10:38:32
ну, ты можешь в докер слое его держать

типа

FROM node as cache blablabla build cache FROM alpine as release COPY --from=cache bababla node_modules

но проблема в том, что кэш ноды тогда легко просрать

Maxim
31.05.2019
10:43:21
да, жать там, или в cdn отдавать / подменять
Мы реализовали возможность через get параметры передавать необходимые размеры, фильтры, конвертацию, и много чего еще, для изменения картинки, если интересно могу скинуть ссылку на сервис который мы прикрутили к проекту, нам нельзя было использовать сторонние сервисы для работы с нашей статикой, но взять сторонний сервис и сделать частью нашего приложения это всегда пожалуйста, поэтому было решено поселить его в нашем зоопарке, есть не просит, в быту неприхотлив, живет в отдельной клетке

Dmitry
31.05.2019
10:44:13
ну, ты можешь в докер слое его держать
Ну а как это между билдами делать?

билдить кеш отдельно?

George
31.05.2019
10:44:34
docker build —target=cache

Dmitry
31.05.2019
10:47:54
ну ок, как кеш передать в другой билд?

если раннер на другом сервере, итд

или подразумевается что делаем билд на одном и том же сервере?

и как тогда он понимает наличие кеша когда мы запускаем docker build —target=cache?

там же npm install в одном слое

Eugene
31.05.2019
10:50:55
собираю swarm, оказалось, что в контуре overlay полноценно не работает, но связь между кортейнерами и самими серверами работает нормально. собираюсь передать в контейнер информацию об адресах серверов сервиса (в виде переменной, например) и заставить сервис ходить на адреса серверов. хотелось бы, чтобы адреса вычислялись в момент запуска компоуза, как такое провернуть? не слишком завернул, понятно о чём речь?

Dmitry
31.05.2019
10:51:27
по идее можно сделать билд кеш имиджа, и в нем же билдить кеш. то есть на момент запуска docker build в from имидже уже будет старый кеш

Google
Vladimir
31.05.2019
10:58:40
Всем привет. Есть следующая задача - написать интеграционный тест изолированный для pcap сниффера. Т.е. мне нужно в одном контейнере иметь сетевой интерфейс в promiscuous mode и из другого контейнера туда направить сетевые пакеты (dns запрос). Может кто-то подсказать, в каком направлении копать и вообще возможно ли это? Спасибо.

Alex
31.05.2019
11:07:32
во-первых - мультистейдж во-вторых - можно ARG передавать переменные внутрь контейнера на стадии сборки и в зависимости от этого что-то делать
я в докере вообще не разбираюсь - я фронтенд, и я думал, что в докерфайле нельзя исполнять какие-то условия. Т.е по уму, конечно было бы прописать скрипт 'build-dev-image': docker build -t webapp-wms-dev . ARG MODE=DEV, и в зависимости от него в инструкции Dockerfile сделать нужные манипуляции. Что-то вроде: FROM node:8-alpine as buildContainer COPY . /app WORKDIR /app RUN npm install IF (MODE == 'LOCAL' || MODE == 'DEV') { RUN npm run build } ELSE { RUN npm run build } FROM nginx:alpine COPY --from=buildContainer /app/dist/webapp-WMS /app IF (MODE == 'LOCAL') { COPY --from=buildContainer /app/deploy-configs/local/nginx.conf /etc/nginx/nginx.conf } IF (MODE == 'DEV') { COPY --from=buildContainer /app/deploy-configs/dev/nginx.conf /etc/nginx/nginx.conf } IF (MODE == 'PROD') { COPY --from=buildContainer /app/deploy-configs/prod/nginx.conf /etc/nginx/nginx.conf } COPY --from=buildContainer /app/mime.types /etc/nginx/mime.types COPY --from=buildContainer /app/gzip.conf /etc/nginx/gzip.conf EXPOSE 9000/tcp

Alex
31.05.2019
11:08:06
если условные конструкции в dockerfile возможны, то это решит все проблемы

George
31.05.2019
11:08:33
смотри

1. итерация - делаешь билд

получаешь образ node-cache:latest

2. а потом его же используешь в качестве FROM: node-cache:latest as cache

херота в том, что если образа изначально нет - ты сосешь лапу

Dmitry
31.05.2019
11:10:13
просто изначально мультистейдж это не ответ для node_modules, .npm

George
31.05.2019
11:10:29
FROM ololo ARG TYPE ENV TYPE=$TYPE COPY ./my_build.sh my_build.sh RUN ./my_build.sh

и всю переменную часть (в зависимости от TYPE) засунуть в my_build.sh

т.е. у тебя выбор ветки будет именно в my_build.sh

в принципе Флант к чему-то подобному пришел со своей утилитой dapp

просто изначально мультистейдж это не ответ для node_modules, .npm
ну, я спорить не буду. Это как из того, из какого говна и палок можно собрать пайплайн

Google
George
31.05.2019
11:15:40
количество базовых примитивов весьма сильно ограничено

Alex
31.05.2019
11:16:58
RUN if [ "$argname" = "false" ] ; then echo 'false'; else echo 'true'; fi нашел такой пример, любая условная конструкция начинается с RUN? и еще и заканчивается каким-то fi

спасибо, ребят, был убежден, что в докере нет условных конструкций никаких, от этого и подзакипел

Alexey
31.05.2019
11:18:23
Dmitry
31.05.2019
11:20:10
я бы все равно сделал dev/build контейнер и еще один в качестве деплоя

Roman
31.05.2019
11:22:25
Привет, у меня есть бинарник хотел его в контейнер запихать так вот выглядит докер файл: FROM alpine ADD test /usr/bin/ ENTRYPOINT /usr/bin/test Собираю docker build -t test . Запускаю: docker run test Вижу: /bin/sh: /usr/bin/test: not found Что я не так делаю?

George
31.05.2019
11:22:40
1. не используй ADD

2. используй COPY

3. у тебя chmod +x сделан?

Roman
31.05.2019
11:23:02
+

Alex
31.05.2019
11:24:00
я бы все равно сделал dev/build контейнер и еще один в качестве деплоя
я просто все равно много чего не понял из вашего способа, ну и поскольку это не моя компетенция сделать все по вышке в докере, то я, наверное, с условиями буду пробовать, так как понимаю хотя бы как работает

Roman
31.05.2019
11:24:32
2. используй COPY
аналогичная история

Roman
31.05.2019
11:24:56
+
же

Ivan
31.05.2019
11:25:12
[ "$argname" = "false" ] && echo false || echo $argname

Google
George
31.05.2019
11:25:17
делаешь docker run -it --rm --entrypoint /bin/sh test заходишь в консоль контейнера и все проверяешь глазами

наличие файла, что он выполняется, и т.п.

а то вдруг окажется, что ты еще и к glibc прилинковался

Ivan
31.05.2019
11:26:51
ldd test - какие библиотеки использует бинарник

Roman
31.05.2019
11:27:52
ldd /usr/bin/test /lib64/ld-linux-x86-64.so.2 (0x7f676b598000) libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f676b598000) libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f676b598000)

George
31.05.2019
11:28:14
оооо. libc ?

Roman
31.05.2019
11:29:04
это ГОшный бинарник, я хз, может алпайн не подходит

George
31.05.2019
11:29:12
попробуй в убунту засунуть

Dima
31.05.2019
11:29:41
Ребят, расскажите кто какую ci систему использует, там jenkins, teamcity или gitlab ci, просто интересна эта вещь)) И если не сложно, то почему именно это и выбрали

George
31.05.2019
11:29:45
по крайней мере поймешь дело в alpine или нет. Если же хочется прям по феншую - можешь потом сборку в golang:alpine делать, чтобы ОС, в которой компилится - была той же, что и целевая

это не столь принципиальный вопрос. Из указанных трех проще начать с гитлаба

Dima
31.05.2019
11:30:27
все
А какая больше нравится? и почему)

George
31.05.2019
11:31:19
никакая. все говно

Dima
31.05.2019
11:31:27
это не столь принципиальный вопрос. Из указанных трех проще начать с гитлаба
Вот смотрю на неё и на jenkins. Просто вроде у giltab 2000mins для ci. Это надо наверное на своём серваке разворачивать gitlab

George
31.05.2019
11:31:27
попробуйте гитлаб - я серьезно

2000 минут - это жесть как много. Для маленького проекта за глаза. Тем более, что минуты можно докупать

если нужно больше - можно свои раннеры подключить, и тогда минут безлимит ДАЖЕ С ОБЛАЧНЫМ гитлабом

Dima
31.05.2019
11:32:44
Свои раннеры - это к примеру какие?

Alexey
31.05.2019
11:33:09
Свои раннеры - это к примеру какие?
Свои гитлаб раннеры на своем железе или на других облаках

Roman
31.05.2019
11:33:40
спасибо за наводку, скомпилил с -tags netgo взлетоло

Dima
31.05.2019
11:38:07
Просто была такая задача, человек 8 разрабатывают сервис, фронт+бек. С докером и git. Дальше было интересно как настроить ci. Раньше был на сервере sh скрипт и всё? А теперь хочется сделать все нормально и удобно. И тип возник вопрос github vs gitlab и jenkins vs gitlab ci и как всё это лучше связывать

Страница 1263 из 1375