-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEvents.Dockerfile
42 lines (34 loc) · 1.55 KB
/
Events.Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Seleccionamos la imagen base. En este caso, se trata del SO minideb:
FROM bitnami/minideb:latest
# Información sobre el mantenedor:
LABEL maintainer="Álvaro [email protected]"
# Definir el puerto y la uri de la base de datos como variables de entorno:
ENV PORT ${PORT}
ENV DB_URI ${DB_URI}
# Establecer el directorio de trabajo:
WORKDIR /usr/src/app
# Instalar python3
# Atualizar pip e instalar las dependencias.
# Instalar netbase para que se cree el fichero /etc/protocols en el contenedor. Este fichero
# es necesario para los workers asíncronos de gunicorn.
# No usamos el requirements.txt porque contiene módulos que no son necesarios en el contenedor.
# Además indicamos que no use la caché.
RUN install_packages python3 python3-pip netbase \
&& python3 -m pip install --no-cache-dir --upgrade pip \
&& python3 -m pip install --no-cache-dir dnspython \
gunicorn[gevent] \
gunicorn \
hug \
pymongo
# Copiar solamente los tres scripts de python necesarios:
COPY src/Events.py src/events_rest.py src/mongo_data_manager.py ./
# Esta orden solo tiene carácter informativo. Indica a futuros usuarios de este
# dockerfile el puerto en el que escucha el microservicio.
EXPOSE ${PORT}
# Creamos un usuario para evitar que el servidor se ejecute con permisos de
# superusuario, por temas de seguridad:
# https://devcenter.heroku.com/articles/container-registry-and-runtime#testing-an-image-locally
RUN useradd -m nonroot
USER nonroot
# Lanzar gunicorn:
CMD gunicorn --worker-class gevent -w 10 -b 0.0.0.0:${PORT} events_rest:__hug_wsgi__