-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfileAlpine
51 lines (51 loc) · 2.12 KB
/
DockerfileAlpine
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
43
44
45
46
47
48
49
50
51
#Imagen y versión que usaremos de base para la
#construcción del contenedor.
FROM alpine:latest
#Indicamos a modo informativo, el responsable encargado de
#mantener el repositorio, con la etiqueta LABEL, ya que
#MAINTAINER se encuentra [deprecated]
LABEL maintainer="osc9718@gmail.com"
#Instalamos node y npm con la orden add ya que no vienen
#por defecto instalados en la imagen elegida.
#Al usar --no-cache, evitamos tener que usar update y no
#tener que almacenar los índices localmente, lo que nos
#permitirá ahorrar espacio en el contenedor.
RUN apk add --no-cache nodejs npm
#Establecemos el directorio de trabajo.
WORKDIR /usr/src
#Copiamos el package.json junto al package-lock.json donde
#hemos especificado las dependencias de nuestro microservicio.
COPY package*.json ./
#Instalamos las dependencias de producción especificadas en el
#package.json gracias al flag --production. Si simplemente
#install, npm instalaría las dependencias especificadas en el
#apartado de dependencias de desarrollo.
RUN npm install --production
#Copiamos el contenido del código de la aplicación
#al directorio de trabajo definido dentro del contenedor.
#El segundo argumento hace referencia a la dirección donde se copiará
#el contenido. Si se usa el punto, estamos indicando que se escoja
#la ruta definida en el WORKDIR.
COPY app/graphql app/graphql/
COPY app/models app/models/
COPY app/utils app/utils/
COPY app/app.js app/
COPY .babelrc .
COPY LICENSE .
#Indicamos a modo informativo el puerto interno
#de nuestro microservicio.
EXPOSE 8080
#Creamos un usuario sin privilegios de root para ejecutar
#el contenedor
RUN adduser -D dockeruser
#Establecemos el usuario creado sin privilegios de root
#para ejecutar el contenedor de la imagen. Esta es una
#práctica aconsejada para evitar problemas de seguridad
#derivados de los permisos de un usuario root.
USER dockeruser
#Definimos la acción a ejecutar, que en nuestro caso,
#será el comando start definido en los scripts del
#package.json de nuestro microservicio, encargado de
#iniciar el microservicio. Esta acción se ejecutará
#automáticamente al ejecutar el contenedor.
CMD ["npm","start"]