Đã thử nghiệm với Python 3.4.8, 3.5.5, 3.6.5 và 2.7.14 (chỉ cần thay 3 bằng 2):
# You can use a specific version too, like python:3.6.5-alpine3.7
FROM python:3-alpine
WORKDIR /usr/src/app
COPY requirements.txt .
RUN \
apk add --no-cache postgresql-libs && \
apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
apk --purge del .build-deps
COPY . .
CMD ["python3", "app.py"]
Giải thích:để xây dựng Psycopg, bạn cần các gói gcc musl-dev postgresql-dev
. Sau đó, bạn cũng cần tệp thực thi pg_config đó:trong khi chỉ cần cài đặt postgresql-dev
sẽ hoạt động, postgresql-libs
cũng tốt và chiếm ít dung lượng hơn 12 MB.
Đây là phiên bản gốc của câu trả lời (dựa trên Dockerfile này) trong đó tôi cài đặt Python theo cách thủ công vào hình ảnh Alpine thuần túy vì tại thời điểm đó Python không cung cấp hình ảnh Docker với Python 3.6 và Alpine 3.7. Nếu bạn muốn cài đặt Python 2.7 như vậy, hãy thực hiện apk add py2-pip
(được gọi là py-pip
trong các đại diện Alpine cũ hơn).
FROM alpine:3.7
WORKDIR /usr/src/app
COPY requirements.txt .
RUN \
apk add --no-cache python3 postgresql-libs && \
apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev postgresql-dev && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
apk --purge del .build-deps
COPY . .
CMD ["python3", "app.py"]