Contenedor generado a partir de aplicación Ruby+Node compilada en un contenedor y publicada en otro.
10K+
Ejemplo de desarrollo y dockerizado de una aplicación Node + Ruby. La aplicación se construye y compila en un contenedor y se copia para servirse en otro (un servidor NGINX).
Preving Boostrap es el compendio de guía de estilos, biblioteca de componentes HTML+CSS+JS y patrones de diseño front-end para las aplicaciones de Grupo Preving.
Se ha utilizado una imagen de NGINX (https://hub.docker.com/_/nginx), un servidor web ligero, para "servir" la app dockerizada.
Previamente, se ha copiado y compilado la aplicación en un contenedor generado con una Imagen de Alpine + Ruby + NodeJS/NPM/Yarn https://hub.docker.com/r/scardon/ruby-node-alpine/
DockerfileEl archivo Dockerfile es el siguiente:
# Empleamos una imagen de Alpine con Ruby y Node ya instalados.
# Le asignamos el alias 'builder' para poder al contenedor desde otro.
FROM scardon/ruby-node-alpine:2.6.1 AS builder
# Directorio de trabajo.
WORKDIR /app
# Copiamos desde el directorio de la applicación en el que nos encotramos (lo que no queramos copiar estará detallado en el fichero .dockerignore)
COPY . .
# Copiamos el archivo de configuración para la compilación
ADD _config-docker.yml _config.yml
# Instalamos las herramientas de compilación básicas en Alpine.
RUN apk update && \
apk add build-base
# Instalamos modulos de Node necesarios.
RUN npm install
# Instalamos las gemas 'eventmachine', 'bundler', lanzamos las dependiencias y actualizamos las gemas.
RUN gem install eventmachine -v '1.2.7' --source 'https://rubygems.org/' && \
gem install bundler --force && \
bundle install && \
bundle update && \
gem update
# Creamos el compilado de la distribución de Bootstrap y la compilación de documentos de la guía
RUN npm run dist && \
npm run docs
# Descargamos la imagen de NGINX sobre Alpine
FROM nginx:alpine
EXPOSE 80
# Copiamos el archivo de configuración de NGINX desde local
COPY ./nginx.conf /etc/nginx/nginx.conf
# Copiamos todo el contenido de la app, ya compilada, al servidor NGINX.
COPY --from=builder /app/_docker/ /usr/share/nginx/html/
Se ha configurado la imagen para generar un contenedor liviano y ultra ligero. El archivo nginx.conf es el siguiente:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types; # Para que coja correctamente los CSS
sendfile on;
server {
listen 80;
server_name styleguide.com; # Da igual
# Directorio / del servidor
root /usr/share/nginx/html;
# Compresión GZIP te todo el código
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
}
Instalar Docker.
Descargar la imagen:
docker pull lmmartin/full-preving-bootstrap
Lanzar el contenedor por primera vez:
docker run --rm -d -p 8888:80 --name styleguide lmmartin/full-preving-bootstrap:latest
Acceder al contenedor a través de http://192.168.99.100:8888/.
Para el el contenedor: docker stop styleguide
Lanzar el contenedor de nuevo: docker start styleguide
NOTAS:
--rm durante la primera ejecución del contenedor este se borrará automáticamente en cuanto lo paremos (docker stop styleguide), por lo que habría que volver a lanzarlo con un docker run la siguiente vez. En caso de no incluirlo, podremos guardar su estado y lanzarlo de nuevo mediante un docker start.Content type
Image
Digest
Size
13.8 MB
Last updated
about 7 years ago
docker pull lmmartin/full-preving-bootstrap