Алексей
Алексей
обычный try_files
Митяй
Митяй
FROM nginx as production
COPY --from=registry:4555/production:latest /app/public /app/public/
Митяй
Довольно быстро и не нужно париться с volumes
Алексей
Алексей
Ну вот мой образ для статики к скрину выше
Nurik
Нашёл решение. Спасибо за внимание.
docker service update --mount-add type=volume,source=admin-volume,target=/usr/src/admin-app
Алексей
Митяй
nginx-proxy / traefik?
traefik для меня к сожалению не подходит, brotli нет. А в nginx-proxy не вижу смысла в swarm. Что он решает?
Митяй
Митяй
Еще раз, в #3211 описывается volumes_from, которого в docker-compose v3 нет
Митяй
https://stackoverflow.com/questions/42232051/docker-compose-volumes-from-equivalent-with-version-3
Митяй
Про деплой, надо гуглить blue green deployment docker swarm. Прям ссылки ща нет. Я пока не успел сделать по хорошему такой деплой)
Митяй
Ага, в теории может и должно работать, у меня были проблемы.
Митяй
Не могу вспомнить в чем конкретная причина)
Митяй
А, ну может
Je
Привет, ни у кого не случалось в swarm'е на 17.09.0-ce такое, что контейнеры неправильно резолвят IP при обращении к сервису по имени? Проявилось спонтанно, docker inspect <container_id> показывает один IP, при обращении к нему из этой же сети по имени IP другой (к тому же статический и не меняется если грохать контейнер).
eahqzsr
К вопросу о статике - я статику собираю прям в контейнер с nginx, как выше советовали.
eahqzsr
Чтобы на остальные сервисы не влияло, вперед ставлю другой nginx который форвардит запросы куда нужно.
Je
Отвечая на свой вопрос - нужно указывать в стримах nginx явное указание резолвера docker: resolver 127.0.0.11 valid=30s;
Slava
Всем привет.
Столкнулся с такой проблемой. Контенер не стартует после перезагрузки виртуалки
docker run -d —restart=always -p 6379:6379 -v /vagrant_data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf —name redis redis:alpine redis-server /usr/local/etc/redis/redis.conf
Но если убрать из строки запуска комманду redis-server /usr/local/etc/redis/redis.conf, то все работает как надо.
docker run -d —restart=always -p 6379:6379 -v /vagrant_data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf —name redis redis:alpine
Aleksandr
пользуйся ``` для выделения блоков кода...
Slava
Anonymous
docker run -d —restart=always -p 6379:6379 -v /vagrant_data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf —name redis redis:alpine redis-server /usr/local/etc/redis/redis.conf
Anonymous
ы)
Aleksandr
насколько я помню, если есть аргументы (содержащие дефисы?) их нужно отделять с помощью --:
docker run -d \
--restart=always \
-p 6379:6379 \
-v /xxx/redis.conf:/xxx/redis.conf \
--name redis \
redis:alpine \
-- redis-server /usr/local/etc/redis/redis.conf
Aleksandr
Artem
не вариант замонтировать по дефолтному пути конфига чтобы проверить?
Slava
не работает. При перезапуске виртуалки также не стартует, только вручную
Artem
ну так значит конфиг кривой
Artem
нужно курить логи
Artem
Slava
да. если не передовать комманду то все ок
Artem
так в чем проблема так работать с контейнером?)
Slava
проблема в ручном запуске контенера. нужно vagrant up и вперед
Artem
а что контейнер нельзя запускать не указывая command?
Slava
ну можно не комманду указывать, а аргумент - путь до конфига. но результат тотже
Artem
docker run -d —restart=always -p 6379:6379 -v /vagrant_data/redis/conf/redis.conf:/etc/redis/redis.conf —name redis redis:alpine
Artem
вот так сделать вообще никак?
Artem
тогда никакие пути указывать ненадо аргументами
Slava
сейчас попробую.
в alpine нет /etc/redis/
вроде как там только можно редис серверу аргументом передать конфиг. или я не понял где дефолтный конфиг лежит.
Artem
а да, действительно дефолтно он там не лежит
Artem
в моих образах энтрипойнт на него указывает
Artem
/usr/bin/redis-server /etc/redis/redis.conf
Aleksandr
Используем systemd для запуска docker-контейнеров
[Unit]
Description=My Awesome Service
Requires=docker.service
After=docker.service
[Service]
Restart=always
RestartSec=3
ExecStartPre=/bin/sh -c "/usr/bin/docker rm -f my-awesome-service 2> /dev/null || /bin/true"
ExecStart=/usr/bin/docker run --rm -a STDIN -a STDOUT -a STDERR --env-file=/etc/default/my-awesome-service -p 0.0.0.0:3301:3301 -v /etc/project/service:/etc/wallarm -v /var/lib/blacklist:/var/lib/blacklist -v /var/log/project/service:/var/log/wallarm --name my-awesome-service wallarm-dkr.jfrog.io/my-awesome-service:v0.17.0.0
ExecStop=/usr/bin/docker stop my-awesome-service
[Install]
WantedBy=multi-user.target
#systemd #docker
Artem
и чем же -d плох то?
Artem
если докер стартует через системд, то какая разница как он будет ранить контейнеры?
Aleksandr
м... всем? он просто в бекграунде контейнер запускает, тогда как systemd будет следить за его состоянием, перезапуском, собирать логи
Slava
Artem
Artem
параметр restart always тогда как работает?
Slava
в alpine entrypoint
`
#!/bin/sh
set -e
# first arg is -f or --some-option
# or first arg is something.conf
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
set — redis-server "$@"
fi
# allow the container to be started with --user
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
chown -R redis .
exec su-exec redis "$0" "$@"
fi
exec "$@"
`
Aleksandr
а запускаешь ты его как при загрузке виртуалки?
Aleksandr
кроном?
Slava
не вижу где тут дефолтный конфиг
Artem
Artem
Докер демон запускается через системд при старте виртуалки
Artem
после этого он по полиси ранит все контейнеры
Artem
которые нужно ранить
Slava
ну в убунту вроде системд он наверное и докер стартует
Artem
да везде уже по дефолту системд старутет докер
Slava
просто с другими контейнерами нет проблем стартуеют и норм.
видимо придется собрать образ, изи не получается)
Slava
докер куда логи пишет?
Artem
Artem
докер куда логи пишет?
через docker logs смотри, а так /var/lib/docker/container/xxxxx/ для каждого контейнера
Roman
Ребята, что используете для nginx + letsencrypt?
Aleksandr
Artem
да даже для 10-20 уже неприкольно расписывать системд сервис, когда это нативный функционал докера который передается одним параметром
Artem
Aleksandr
нет, потому что для нескольких сервисов это удобно. есть ансибл, который раскидает все что нужно за тебя