Sto usando l'immagine ufficiale della finestra mobile Python per python 2.7. L'applicazione con cui sto lavorando richiede pyhon-ldap.esegui python-ldap con immagine ufficiale docker python come base
mio dockerfile si presentava così:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Dove python-ldap è in requirements.txt
Naturalmente mi imbatto in questo:
In file included from Modules/LDAPObject.c:9:0:
Modules/errors.h:8:18: fatal error: lber.h: No such file or directory
#include "lber.h"
^
compilation terminated.
error: command 'gcc' failed with exit status
che so è da non avere libldap2-dev e alcuni altri pacchetti installati. Quindi faccio un po 'di ricerche e trovo che l'immagine ufficiale di Python sia costruita su Debian Debian. Sono più di una persona RedHat, ma so di apt-get in modo modifico il mio file di finestra mobile al di sotto:
FROM python:2.7
RUN apt-get install -y libldap2-dev
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
E che gli errori fuori come di seguito
Step 1 : RUN apt-get install -y libldap2-dev
---> Running in 2ca6155b606e
Reading package lists...
Building dependency tree...
Reading state information...
Package libldap2-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libldap2-dev' has no installation candidate
Ok, Ho capito che, mancano i repository, faccio qualche ricerca in più e ritorna nell'immagine base di python faccio ruotare un container e muck around. Posso dimostrare ci sono repos installati (anche se onestamente non ho idea se questi sono validi)
cat /etc/apt/sources.list
deb http://httpredir.debian.org/debian jessie main
deb http://httpredir.debian.org/debian jessie-updates main
deb http://security.debian.org jessie/updates main
I cant sembrano inchiodare tutto giù che cosa sta succedendo, ma sembra che apt in realtà non hanno accesso esterno al repos e apt-cache search restituiscono solo pacchetti che non sono già stati richiamati. Come posso ottenere l'installazione di cose all'interno di un contenitore e/o riconfigurarlo per fare effettivamente qualcosa?
C'è un modo migliore per ottenere i pacchetti ho bisogno di compilare python-ldap con l'immagine pitone ufficiale?
Yup, grazie! Tutto funziona come previsto ora – fishpen0