Saltar al contenido

¿Cómo ejecutar Docker con python y Java?

Puede que se de el caso de que halles algún fallo en tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

OK me tomó un poco de tiempo para averiguarlo. Y mi agradecimiento va a esta respuesta.

Creo que mi enfoque no funcionó porque no tenía una versión básica de Linux.

Así que va así:

  1. Obtenga Linux (estoy usando Alpine porque es básico)
  2. Obtenga Java a través del administrador de paquetes
  3. Obtener Python, PIP

OPCIONAL: busque y configure JAVA_HOME

  1. Encuentra la ruta a JAVA_HOME. Tal vez haya una mejor manera de hacer esto, pero lo hice ejecutando el contenedor, luego miré dentro del contenedor usando docker exec -it [COINTAINER ID] bin/bash y lo encontré
  2. Colocar JAVA_HOME en dockerfile y build + ejecutarlo todo de nuevo

Aquí está el Dockerfile final (debería funcionar con el código python en la pregunta):

### 1. Get Linux
FROM alpine:3.7

### 2. Get Java via the package manager
RUN apk update 
&& apk upgrade 
&& apk add --no-cache bash 
&& apk add --no-cache --virtual=build-dependencies unzip 
&& apk add --no-cache curl 
&& apk add --no-cache openjdk8-jre

### 3. Get Python, PIP

RUN apk add --no-cache python3 
&& python3 -m ensurepip 
&& pip3 install --upgrade pip setuptools 
&& rm -r /usr/lib/python*/ensurepip && 
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && 
if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && 
rm -r /root/.cache

### Get Flask for the app
RUN pip install --trusted-host pypi.python.org flask

####
#### OPTIONAL : 4. SET JAVA_HOME environment variable, uncomment the line below if you need it

#ENV JAVA_HOME="/usr/lib/jvm/java-1.8-openjdk"

####

EXPOSE 81    
ADD test.py /
CMD ["python", "test.py"]

Soy nuevo en Docker, por lo que esta puede no ser la mejor solución posible. Estoy abierto a sugerencias.

ACTUALIZACIÓN: PROBLEMAS COMUNES

  • Dificultad para usar paquetes de python

Como Joabe Lucena señaló aquí, Alpine puede tener problemas con ciertos paquetes de python. Le recomiendo que use una distribución de Linux que funcione mejor para usted, por ejemplo, centos.

Una solución más fácil para el problema anterior es usar contenedores docker de varias etapas donde puede copiar el contenido de uno a otro. En el caso anterior se puede tener openjdk:slim como contenedor base y luego use el contenido de un contenedor de python para copiarlo en este contenedor base de la siguiente manera:

FROM openjdk:slim
COPY --from=python:3.6 / /

... 



...

Esta característica está disponible a partir de Docker 17.05 y hay más cosas que puede hacer usando la compilación de varias etapas, como copiar solo el contenido que necesita de uno a otro.

Documentación de referencia

Otra alternativa es simplemente utilizar imagen docker-java-python desde el centro de la ventana acoplable. https://hub.docker.com/r/rappdw/docker-java-python

FROM rappdw/docker-java-python:openjdk1.8.0_171-python3.6.6
RUN java -version
RUN python --version

Calificaciones y reseñas

Más adelante puedes encontrar las referencias de otros usuarios, tú todavía puedes insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *