Из того, что я могу сказать, есть две причины, по которым вы не можете получить доступ к серверу.
Во-первых, вы не перенаправляете никакие порты из контейнера на хост. Вы должны включить аргумент -p 80:80
в свою команду docker run
.
Во-вторых, вы пытаетесь прослушивать, как я полагаю, IP-адрес самого контейнера, который не является статическим (по умолчанию). В конфиге nginx вы должны заменить listen 172.17.0.2:80;
на listen 0.0.0.0:80;
.
После этих двух модификаций вы сможете получить доступ к вашему серверу.
Другой подход (но не рекомендуется) заключался бы в запуске контейнера с параметром --network=host
. Таким образом, сеть хоста фактически видна изнутри контейнера. В этом случае вам нужно будет только настроить конфигурацию nginx для прослушивания действительного адреса.
Однако, если проблема не устранена, хорошим подходом было бы запустить docker exec -it {$container_id} bash
во время работы контейнера и посмотреть, сможете ли вы получить доступ к серверу из самого контейнера. Это будет означать, что сервер работает правильно, но по другим причинам порт неправильно перенаправляется на хост.
Я знаю, что это старый вопрос, но в ответ на запрос Streamlines о CONVERT_TZ:
Если у вас не загружены именованные таблицы часовых поясов mySQL (что маловероятно при обычной установке) , вам нужно ввести часовые пояса как смещение от UTC.
CONVERT_TZ(status_changes.created_at, '+00:00', '+08:00') between '2009-01-24' and '2009-03-12')
Если Вы не используете find_by_sql
, а скорее используйте a find
с a :conditions
пункт, которые позволяют нам направляющие, делает замены, он преобразует все автоматически.
Model.find :all,
:conditions => ["created_at between ? and ?", start_date, end_date]
Худший случай, если направляющие перепутан датами, можно преобразовать их во времена, и он должен играть приятно:
Model.find :all,
:conditions => ["created_at between ? and ?",
start_date.to_time, end_date.to_time]
MySQL имеет функцию CONVERT_TZ, которая берет дату и время и преобразовывает ее от одного часового пояса до другого. Вы могли создать свой запрос для преобразования из хранимой суммы (UTC) к локальному часовому поясу (PST).
CONVERT_TZ(status_changes.created_at,'UTC',?) between ? and ?, 'PST, '2009-01-24', '2009-03-10'
Я попробовал ответить Яна, но это не сработало. Rails правильно обрабатывает часовой пояс при сохранении и загрузке записей, но, похоже, не делает то же самое с параметрами запроса. Обратите внимание, что приложение, над которым я работаю, находится в Rails 2.1.1, так что с тех пор ситуация, возможно, несколько улучшилась.
С помощью одной небольшой настройки я смог заставить решение Яна работать: получить значение времени в часовом поясе UTC с помощью метода getutc, а затем передать его в качестве параметра. Это также не должно причинить вреда в любых более поздних версиях Rails, которые могут правильно обрабатывать зону временных параметров, поскольку время в формате UTC не изменяется с помощью getutc, а изменяется только часовой пояс.