Ошибка сборки Docker с приложением Flask MySQLdb

Я только начинаю работать с Docker, поэтому решил попробовать создать простое приложение API фляги.

Проблема в том, что я продолжаю получать различные ошибки в зависимости от того, что я пытаюсь сделать, чтобы исправить их.

Мой requirements.txt:

Flask
MySQL-python
bleach
bcrypt

Мой Dockerfile:

FROM ubuntu:latest
MAINTAINER Caleb Hester "[email protected]"
ENV LANG C.UTF-8
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["python2.7"]
CMD ["api.py"]

Я получаю эту ошибку: EnvironmentError: mysql_config не найден

Я пробовал несколько вещей, включая добавление apt-get -y build-dep python-mysqldb, но когда я это делаю, я получаю сообщение об ошибке о необходимости добавить некоторые URI к моему sources.list и что-то о локалях и C.UTF-8.

Я очень смущен здесь.

Кто-нибудь знает, каким должен быть правильный файл докера?

ОБНОВИТЬ:

После добавления libmysqlclient-dev к моему apt-get install ошибка MySQLdb исчезает, но теперь я получаю эту ошибку для cffi:

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-JrzOzV/python2.7-2.7.15~rc1=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/usr/include/python2.7 -c c/_cffi_backend.c -o build/temp.linux-armv7l-2.7/c/_cffi_backend.o
    c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
     #include <ffi.h>
              ^~~~~~~
    compilation terminated.
    error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

Обновлять:

Я исправил это, добавив libffi-dev к моему apt-get install

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, вам не хватает пакета mysql deb.

Попробуйте добавить libmysqlclient-dev к строке

RUN apt-get install -y python-pip python-dev build-essential

так что у вас теперь есть

RUN apt-get install -y python-pip python-dev build-essential libmysqlclient-dev

Спасибо! Это избавило от первой ошибки, но теперь я получаю это: error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

Caleb H. 06.03.2019 22:20

@КалебХ. не уверен в причине этого - может быть, лучше задать это как отдельный вопрос

Debosmit Ray 06.03.2019 23:28

Другие вопросы по теме