AWS ECS с Django + Python + Alpine produce Segmentation Fault

У нас сейчас проблемы с Alpine Linux, после обновления до версии >=17. Похоже, что с alpine17 библиотека openssl в alpine была обновлена до openssl3.

Проблема в том, что наше Django-приложение, собранное через Dockerfile, больше не работает с alpine>=17 на AWS ECS.

Мы устанавливаем дополнительные зависимости, такие как: gcc, build-base, bind-tools, mysql-client, mariadb-dev, postgresql14-client, xmlsec, git, util-linux, curl-dev, openssl, libffi-dev

Затем мы протестировали разные образы, например, python3.11.9-alpine3.20, python3.11.9-alpine3.18, python3.11.3-alpine3.17, python3.12.4-alpine3.18 и т.д. Он работал с python3.11.3-alpine3.16.

Странно, но это действительно работает, если собрать и развернуть приложение django локально через docker-compose и использовать, например, python3.11.9-alpine3.20.

Но если собрать контейнеры (nginx, django, worker, beat) через git-ci и развернуть их на AWS ECS с Fargate или EC2 в качестве типов запуска, то возникают такие ошибки.

В журнале в django-контейнере просто указано: !!! uWSGI process 35 got Segmentation Fault !!! Затем рабочий процесс завершается. Эта ошибка возникает каждый раз, когда происходит соединение с django, nginx или loadbalancer. Локально мы также видим вывод: 485BA4DBE17F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:ssl/record/rec_layer_s3.c:322: ssl_client: SSL_connect

Мы предполагаем, что может быть какая-то несовместимость между новым openssl3, openssl из AWS и, возможно, django. Потому что локальное развертывание с помощью docker-compose действительно работает.

Кто-нибудь сталкивался с подобной проблемой или имеет представление о том, как ее решить?

Вернуться на верх