Поддерживается ли докерная проверка здоровья в pycharm 2017.1

77
6

У меня проблема с pycharm с docker-compose. У меня есть Django внутри контейнера и postgres внутри другого контейнера.

Странная вещь: я просто получаю следующую ошибку при использовании режима отладки pycharm (также когда я обычно запускаю pycharm)

Сервер работает на хосте "db" (127.0.53.53) и принимает соединения TCP/IP на порту 5432?

Когда я запускаю его в командной строке с помощью "docker-compose up", все в порядке.

Моя версия pycharm и информация о os:

PyCharm 2017.1
Build #PY-171.3780.115, built on March 24, 2017
JRE: 1.8.0_112-release-736-b13 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.3

Я не уверен, как работает pycharm с докером. У него есть своя версия?

Информация о версии для докеры:

docker-compose version 1.11.2, build dfed245
docker-py version: 2.2.0
CPython version: 2.7.10
OpenSSL version: OpenSSL 0.9.8zh 14 Jan 2016

Мой файл для создания докеров выглядит следующим образом:

 version: '2.1'
services:
db:
image: postgres
restart: always
ports:
- "5432:5432"
healthcheck:
test: "exit 0"
retries: 3
timeout: 10s
interval: 3s

web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
db:
condition: service_healthy

Я предполагаю, что это не проверяется. Цель проверки работоспособности заключается в том, что веб-изображение ожидает, что postgres действительно успешно запустится. Если я пропущу это, я получу ту же ошибку, что и в pycharm.

спросил(а) 2021-01-25T14:50:54+03:00 4 месяца, 3 недели назад
1
Решение
63

У меня возникла проблема с использованием docker-compose.yml с Pycharm 2017.3 в последнее время, когда ошибка, которую я получал, по-видимому, связана с конфигурацией healthcheck, которая была у меня в файле docker-compose

Can not deserialize insurance of java.util.ArrayList out of START_OBJECT token at [Source: N/A; line: -1, column: -1] (through reference chain:
com.intellij.docker.compose.configuration.beans.v2.DockerComposeConfigurationV2["services"]->java.utillInkedHashMap["web"]->com.intellij.docker.compose.configuration.beans.v2.DockerComposeServiceV2["depends_on"])

Я переключился с использования конфигурации healthcheck на использование образа waisbrot/wait docker, чтобы гарантировать, что Postgres был готов, настроенный, как показано ниже для вашего примера:

version: '2.1'

services:
db:
image: postgres
restart: always
ports:
- "5432:5432"

web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

wait:
image: waisbrot/wait
links:
- db
environment:
- TARGETS=db:5432

Надеюсь это поможет.

С тех пор у меня возникли проблемы с использованием waisbrot/wait и изменились для управления методом заказа на загрузку в моем файле для загрузки в docker-compose как показано ниже, и обнаружили, что это работает на Pycharm 2017.3 (OSX), а также обеспечивает доступность и готовность базы данных к использование web контейнера. (Это также было проверено на работу при создании в Дженкинсе, где я столкнулся с проблемами с waisbrot/wait).

Вам нужно убедиться, что вы используете правильную версию скрипта для своего web контейнера, либо bash либо sh (Alpine использует sh).

version: '3.1'

services:
db:
image: postgres
restart: always
ports:
- "5432:5432"

web:
build: .
restart: always
command: ./wait-for.sh db:5432 -- python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

ответил(а) 2021-01-25T14:50:54+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема