Kenya-West
Ребят, привет, пытаюсь вспомнить, как докеризировать Angular 7/NodeJS 10.12 приложение... nginx.conf: user nginx; worker_processes 4; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { log_format gzip '[$time_local] ' '"$request" $status $bytes_sent'; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /dev/stdout; charset utf-8; sendfile on; keepalive_timeout 65; #include /etc/nginx/conf.d/*.conf; server { listen 9000; server_name localhost; access_log /dev/stdout; root /usr/share/nginx/html; location / { try_files $uri$args $uri$args/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } # Compression include /etc/nginx/gzip.conf; } Dockerfile: FROM node:latest AS buildContainer COPY . /app WORKDIR /app # Copy dependency definitions RUN npm install RUN npm run build FROM nginx:latest RUN apt-get update COPY nginx.conf /etc/nginx/nginx.conf COPY gzip.conf /etc/nginx/gzip.conf COPY mime.types /etc/nginx/mime.types COPY --from=buildContainer /app/dist/ /usr/share/nginx/html EXPOSE 9000/tcp Всё компилится и копируется, но на старте меня почему-то ждёт дефолтная страничка NGINX'а, а не моё приложение. В чём проблема?
Kenya-West
Я раньше сталкивался с таким поведением и как-то химичил в nginx.conf, но в данном случае он выглядит как будто норм...
Mikhail
default.conf удали в образе или замени своим
Konstantin
Ребят, привет, пытаюсь вспомнить, как докеризировать Angular 7/NodeJS 10.12 приложение... nginx.conf: user nginx; worker_processes 4; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { log_format gzip '[$time_local] ' '"$request" $status $bytes_sent'; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /dev/stdout; charset utf-8; sendfile on; keepalive_timeout 65; #include /etc/nginx/conf.d/*.conf; server { listen 9000; server_name localhost; access_log /dev/stdout; root /usr/share/nginx/html; location / { try_files $uri$args $uri$args/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } # Compression include /etc/nginx/gzip.conf; } Dockerfile: FROM node:latest AS buildContainer COPY . /app WORKDIR /app # Copy dependency definitions RUN npm install RUN npm run build FROM nginx:latest RUN apt-get update COPY nginx.conf /etc/nginx/nginx.conf COPY gzip.conf /etc/nginx/gzip.conf COPY mime.types /etc/nginx/mime.types COPY --from=buildContainer /app/dist/ /usr/share/nginx/html EXPOSE 9000/tcp Всё компилится и копируется, но на старте меня почему-то ждёт дефолтная страничка NGINX'а, а не моё приложение. В чём проблема?
а чего ты ожидаешь? ты только nginx Запускаешь
Kenya-West
а чего ты ожидаешь? ты только nginx Запускаешь
В другом проекте с Angular 6 всё норм, всё показывает
Konstantin
оу, сорри, не туда глянул, статика же
Konstantin
так а файлы есть в образе, там куда ты их копируешь? проверь в контейнере
Kenya-West
Ща
Konstantin
это же другой путь
Konstantin
root /usr/share/nginx/html;
Kenya-West
Да, понял, ща переделаем
Kenya-West
Да, точно, он его в подпапку сунул. В angular.json была такая строчка: "outputPath": "dist/CV"
Kenya-West
Спасибо! Работает
Денис
подскажите пожалуйста, gitlab-ci собирает образ и кладет в докер регистр, образ называется image:$CI_COMMIT_SHA затем мне надо на стейджинг сервере запустить этот образ команда docker run -d отрабатывает, но образ не заменяется на обновленный
Денис
надо сначала удалить старую версию? как это сделать если в скрипте я не знаю его версию
Денис
docker pull делается
Денис
но изменений никаких
Денис
последовательность push, pull, run выполняется, но ничего не меняется
Evgenii
ну значит нет изменений в образе
Денис
есть, специально вносил изменения в программу
Денис
может из-за версий это? latest обязательно ставить тэг?
Денис
изменения появляются когда я ручками по CONTAINER ID грохну старый и запущу новый, а докер рун отрабатывает без ошибок, но ничего не меняется
Evgenii
так у тебя тэг имаджа меняется ?
Денис
Да, там ид коммита в гит
Evgenii
ну так дропаешь контейнер и заводишь с уже новым имеджем
Денис
А если сделать без тэга, то он сам будет заменяться?
Александр
А если сделать без тэга, то он сам будет заменяться?
Запущенный контейнер будет работать пока не умрет или ты его не остановишь. docker-compose убивает старый и поднимает новый
Денис
Я пока не осилил как связать в кучу dotnet, gitlab ci и docker compose
Денис
Dockerfile сделал, образ собирается, пушится, куда там этот композ засунуть пока непонятно )
Александр
Поднимаешь на тачке gitlab runner или делаешь ssh executor, гитлаб пуллит репу, в которой docker-compose.yml, из него поднимаешь проект
Денис
Гитлаб раннер есть, он как раз образ собирает и пушит в регистр
Денис
docker-compose.yml я так понимаю надо рядом с докерфайлом положить?
taimado
Hi friends. I'm trying to update zerotier in LE thru Docker and I get this error:
taimado
I have tried to make the directories but i get the same error
Денис
вроде разобрался с docker-compose, остался 1 вопросик, как в docker-compose up -d установить переменную окружения? мне получается нужно чтобы на двух разных машинах образ поднимался с разной переменной окружения, раньше я делал с помощью ключа -e команды docker run, а с docker compose как?
Ильдар
Берите docker-compose run
Sergey
environment: - FOO - BAR
Sergey
ну и соответственно будет что-то типа export FOO=SOME_FOO export BAR=SOME_BAR docker-compose up -d
Sergey
из под CI очень удобно
Sergey
но можно и env file юзать (например дешифровывать при деплое подкладывать при старте)
Sergey
а вообще мне было бы любопытно послушать как кто менеджет секреты (для тех у кого не кубер и не сварм)
Денис
в compose файле пропиши
но тогда будет только одно значение переменной, а мне нужно 2 значения одной и той же переменной в зависимости от того, на какой машине запускается docker-compose up -d
Sergey
но тогда будет только одно значение переменной, а мне нужно 2 значения одной и той же переменной в зависимости от того, на какой машине запускается docker-compose up -d
ну так в том то и прикол - установи на разных машинах своих переменные окружения и они будут подтягиваться
Sergey
ну или зависит от того как ты деплоишься. Я например подрубаюсь к удаленному докер демону и на CI под нужный энв выставляю все
Денис
у меня 1 docker-compose.yml, вот видимо мне тоже как-то на CI выставить
Sergey
у меня 1 docker-compose.yml, вот видимо мне тоже как-то на CI выставить
еще раз - в compose у тебя только названия env переменных которые ты хочешь прокидывать. Значения выставляются на том хосте, на котором ты с compose работаешь
Sergey
два варианта: environment: - FOO=${BAR} либо если тебе не надо менять название переменной то просто environment: - FOO
Sergey
https://docs.docker.com/compose/environment-variables/
Денис
получилось ) спасибо!
first
Ребзя, всем привет. Может кто подсказать. Тома, проброс портов, мы делаем в докерфайле или в докере-композе? где лучше или на усмотрение автора?
Sergey
внимательно прочитай второй абзац
Sergey
и скорее всего твой вопрос на этом будет исчерпан
first
внимательно прочитай второй абзац
а лол, чет просмотрел, спасибки :)
Anonymous
у вас нету тут нигде FAQ? я просто хочу спросить где докер сохраняет образы, и я уверен что это уже спрашивали
Max
Есть задачка. На куче kubernetes кластеров с кучей машин запускаются разные контейнеры с игровыми серверами. бОльшая часть этих контейнеров переиспользуют одни и те же images. Допустим у нас есть 5 разных images, внутри которых есть статика, которую нам нужно раздавать с помощью nginx, но мы не хотим запускать вместе с каждым игровым сервером nginx sidecar container, который будет раздавать эту статику. Мы хотим делать это из одного места. Можно как-то примонтировать к ОДНОМУ контейнеру nginx несколько images, не запуская на их основе контейнеры, а просто вытащить оттуда файлы и подсунуть nginx'у?
Anonymous
я и в инете нашел это, я имею в виду что он сохраняет образы отдалено? не на ПК юзера?
Anonymous
/var/lib/docker
Max
Решено! раздаю nginx'ом файлы из /var/lib/docker/overlay2/
𝚔𝚟𝚊𝚙𝚜
можно даже сделать один метаимадж который будет являться квинтесенцией других пяти имаджей. Посмотри на docker stage building, кокретно на COPY --from: https://docs.docker.com/develop/develop-images/multistage-build/
Dmitry
https://techcrunch.com/2018/10/28/biggest-software-acquisition/?guccounter=1
Max
срамота
Согласен. Один момент, контент из контейнера требуется раздавать только когда он запущен. Можно на каждой машине запускать один nginx, но как к нему примаунтить волумы запущенных контейнеров? Еще и на лету?
Igor
ребята, почему не сохраняются изменения образа? Делаю так: docker commit e0ab1276744e blablabla затем docker run blablabla, изменений нет
Andrey
посмотри docker images после commit и запускай с тем тегом, который поменялся
Andrey
ну и если изменения были в volume, то они в образ не проносятся
stanopolous
docker commit e0ab1276744e blablabla:new docker run blablabla:new
Igor
Посмотрел docker images, там тег latest. Запустил docker run blablabla:latest изменений нет
Andrey
что именно меняешь?
stanopolous
тэг latest не то что ты думаешь