Peter
а кто сказал что правильно?
Alf 🙀
а кто сказал что правильно?
тогда может быть проблема в аппе?
Peter
λ docker exec -it ubuntu-utf8 bash root@0b7c1f2d449b:/# date Thu May 18 09:23:17 UTC 2017
Peter
root@0b7c1f2d449b:/# locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
Peter
вот локаль я поправил
Peter
COPY locale /etc/default/locale RUN bla-bla \ && DEBIAN_FRONTEND=noninteractive apt-get install -y locales \ && locale-gen en_US.UTF-8 \ && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales \
Alf 🙀
так и не могу уловить зачем.
Peter
поясняю, в postgresql вы имеете право поставть для базы collation тот, который доступен в системных локалях
Peter
если нужной локали нет, то и в postgresql её не будет
Alf 🙀
господи. зачем вы мне рассказываете что будет а что не будет. зачем вы ставите локаль в базе?
Peter
дык, для корректной работы поисков и сортировок, очевидно же
Peter
и для возможности пихать в базу инфу в нужной кодировке
Avonar
просто как ей тогда пользоваться...
Peter
я аж призадумался от этого вопроса
Peter
вот выхлоп от сервера на его сборке postgres=# SELECT name, setting FROM pg_settings WHERE category ~ 'Locale'; name | setting ----------------------------+-------------------- client_encoding | SQL_ASCII DateStyle | ISO, MDY default_text_search_config | pg_catalog.english extra_float_digits | 0 IntervalStyle | postgres lc_collate | C lc_ctype | C lc_messages | C lc_monetary | C lc_numeric | C lc_time | C server_encoding | UTF8 TimeZone | UTC timezone_abbreviations | Default (14 rows)
Peter
в вот как надо name | setting ----------------------------+-------------------- client_encoding | UTF8 DateStyle | ISO, MDY default_text_search_config | pg_catalog.english extra_float_digits | 0 IntervalStyle | postgres lc_collate | en_US.UTF-8 lc_ctype | en_US.UTF-8 lc_messages | en_US.UTF-8 lc_monetary | en_US.UTF-8 lc_numeric | en_US.UTF-8 lc_time | en_US.UTF-8 server_encoding | UTF8 TimeZone | W-SU timezone_abbreviations | Default (14 rows)
Alf 🙀
так а чем вас с не устраивают? у вас там китайский?
Alf 🙀
Peter
Русский, в том числе
Alf 🙀
Русский, в том числе
но у вас же все равно en_US выставлен
Alexey
λ docker search postgresql NAME DESCRIPTION STARS OFFICIAL AUTOMATED sameersbn/postgresql 106 [OK]
https://hub.docker.com/_/postgres/ Вот официальтный же...
Alf 🙀
я конечно могу ошибаться, но похоже постгре умеет локали на уровне дб (неожиданно) https://www.postgresql.org/docs/9.3/static/multibyte.html The default character set is selected while initializing your PostgreSQL database cluster using initdb. It can be overridden when you create a database, so you can have multiple databases each with a different character set.
Alexey
Мне кажется это проблема в имидже, это дикость какая то собирать образ с ansii
Peter
я конечно могу ошибаться, но похоже постгре умеет локали на уровне дб (неожиданно) https://www.postgresql.org/docs/9.3/static/multibyte.html The default character set is selected while initializing your PostgreSQL database cluster using initdb. It can be overridden when you create a database, so you can have multiple databases each with a different character set.
то, что вы можете иметь несколько баз с разными COLLATIONS, более того, даже таблицы в базе могу быть с разными, не избавляет от того факта, что нужная локаль должна быть в вас в системе
Peter
Мне кажется это проблема в имидже, это дикость какая то собирать образ с ansii
Ну буржуев проблемы стран 3-го мира не особо интересуют
Avonar
вам нужен китайский?
Мало ли какие символы , частенько какое-то говно бывает, да
Avonar
Русский, в том числе
Нахуй нужен русский ?
SCRIPT
вот мой докер билд # Version: 0.0.1 FROM python:2.7-alpine MAINTAINER djtimone <timonefm@gmail.com> RUN pip install —upgrade pip COPY requirements.txt /app/ RUN pip install -r /app/requirements.txt #EXPOSE 80 COPY example.py /app/ COPY teranicouture.py /app/ COPY src /app/ COPY instaserver.sh /app/ WORKDIR /app CMD ["/app/instaserver.sh"]
SCRIPT
докерфайл
SCRIPT
запускаю на сервере docker run работает только один
SCRIPT
апп
SCRIPT
а нужно что бы работало 2
SCRIPT
root@143695:~# docker run djtimone/instaserver Instabot v1.1.0 started at 18.05.2017 15:11:
Anonymous
почему с таким докерфайлом ENTRYPOINT ansible-playbook CMD ["-M", "/root/deploy", "/root/deploy/deploy.yml" ] мне выдаёт, что container_linux.go:247: starting container process caused "exec: \"-M\": executable file not found in $PATH"?
Anonymous
такое тоже не работало: ENTRYPOINT ["ansible-playbook"] CMD ["-M", "/root/deploy", "/root/deploy/deploy.yml" ]
Peter
а скажите-ка, systemd в контейнерах работает или фигос?
Anonymous
он на dbus завязан, поэтому корявенько работает
Alexey
а скажите-ка, systemd в контейнерах работает или фигос?
а зачем, чтобы несколько процессов запускать? нужно так делать в идеале, чтобы 1 контейнер = 1 приложение
Peter
да, это я из академического интереса
Peter
дёрнул в контейнере timedatectl
Alexey
такое тоже не работало: ENTRYPOINT ["ansible-playbook"] CMD ["-M", "/root/deploy", "/root/deploy/deploy.yml" ]
попробуйте убрать ENTRYPOINT и сделать CMD ["ansible-playbook", "-M", "/root/deploy", "/root/deploy/deploy.yml" ] или убрать CMD вообще и при docker run всамый конец добавить -M /root/deploy /root/deploy/deploy.yml
Alexey
Насколько я понимаю одновременно ENTRYPOINT и CMD ставят только тогда, когда для ENTRYPOINT не передаются аргументы. поправьте если я ошибаюсь. Поэтому они не работают вместе...
Alexey
т.е. в этом случае ентрипоинт используется как конфигурационный скрипт запускаемый перед основным процессом. Выше по постгресу я давал ссылку, там как раз так используется.
Anonymous
https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact
Anonymous
подозреваю, что бага
Anonymous
а вот так вот взлетело: docker run --entrypoint ansible-playbook deployer -M /root/deploy /root/deploy/deploy.yml
Alexey
подозреваю, что бага
Да нет :) Там в таблице даже написаны примеры. Поставьте значение энтрипоинт в квадратные скобки
Anonymous
так и сделал. он мне при сборке вообще ENTRYPOINT игнорит, я сейчас внимательней глянул
Anonymous
то есть, сначала завершается шаг RUN, пропускается ENTRYPOINT и наворачивается после этого CMD
Alexey
то есть, сначала завершается шаг RUN, пропускается ENTRYPOINT и наворачивается после этого CMD
И -M можно попробовать перенести в энтрипоинт... А вообще в данном случае смысла это разделять на 2 команды нету, из примера не ясно зачем. В одну строчку было бы красивее :)
Anonymous
лол. кароч RUN не понял закомментированный решёткой \
Sander
Всем привет
Sander
https://github.com/moby/moby что за Moby Project?
Anonymous
теперь так называется докер для коммунити. докер для энтерпрайза останется просто докером
Sander
понятно
Sander
я думал что-то новое сделали
Alex
Ребят, есть питонисты? Как в контейнере получить хост или ip хост машины ?
Alex
средствами питона разумеется
Sergei
не уверен что это тривиальная задача - не проще ли передавать через env ip адрес хост машины при создании контейнера
Vladimir
как я понял, moby - это тулза для сборки дистрибутивов ос, внутри которых будут крутиться контейнеры
Vladimir
в readme в разделе overview более подробно написано про это
Peter
а как-то можно получить лист tag'ов нужного имиджа из docker hub?
Alexey
а как-то можно получить лист tag'ов нужного имиджа из docker hub?
Самое простое, это просто открыть сайт докер хаба и посмотреть список тегов. Если нужно в командлайне, то вот ответ http://stackoverflow.com/questions/28320134/how-to-list-all-tags-for-a-docker-image-on-a-remote-registry Какай то простой команды для этого нету
Peter
Пока так и не понимаю как правильно обойтись с timezone. Допустим, мне нужно крутить несколько контейнеров в разных timezone, следовательно, вариант пробросить /etc/localtime с хоста в контейнер отпадает. Дальше, опять, несколько вариантов. Делать в контейнере правильную timezone примерно так RUN ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime \ && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure -f noninteractive tzdata Или же пускать контейнер как docker run bla-bla -e TZ=Europe/Moscow или любая другая timezone. Но тут у меня вопросы все ли процессы будут правильно понимать это? bash в контейнере время показывает нужное. Но /etc/localtime же фиг знает какой и /etc/timezone тоже
Peter
Я уже собрал, но хочу прояснить
Alf 🙀
Я уже собрал, но хочу прояснить
https://github.com/moby/moby/issues/3359 вот тут прояснить можете
Alf 🙀
Я уже собрал, но хочу прояснить
а не напомните, зачем вам TZ? опять что нибудь этакое с таймзоной в базе хранить да?
Alexey
Пока так и не понимаю как правильно обойтись с timezone. Допустим, мне нужно крутить несколько контейнеров в разных timezone, следовательно, вариант пробросить /etc/localtime с хоста в контейнер отпадает. Дальше, опять, несколько вариантов. Делать в контейнере правильную timezone примерно так RUN ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime \ && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure -f noninteractive tzdata Или же пускать контейнер как docker run bla-bla -e TZ=Europe/Moscow или любая другая timezone. Но тут у меня вопросы все ли процессы будут правильно понимать это? bash в контейнере время показывает нужное. Но /etc/localtime же фиг знает какой и /etc/timezone тоже
да, если контейнеров будет много, а имидж один, то просто передавайте через -e ... Саму таймзону, если просто передача -e TZ=Europe/Moscow не решает вашу проблему, в контейнере может конфигурировать entrypoint.sh который будет запускаться брать env переменную и выполнять с ней указанную вами команду.
E
именно так и сделал
E
https://gist.github.com/adastreamer/33d7e747d893608fbbc6cdeddc7404a0
E
ну задача другая, но суть такая же
E
удобно, когда надо делать какой-то сетап не только при запуске заранее приготовленной CMD, а когда, например, надо что-то выполнять при выполнении кастомной команды
E
во огонь
хотел ответить на следующее собщение 😊