• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Crear imagen Docker con Shiny Server

julio 10, 2020 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

A la hora de distribuir aplicaciones creadas con Shiny nos podemos plantar la idea de usar imágenes de Docker. Algo que nos permite evitar posibles problemas de incompatibilidad debido a no disponer de la versión correcta de R, Shiny o cualquier otro paquete en el servidor. Una vez creada la aplicación crear una imagen de Docker con Shiny Server es relativamente sencillo, por lo que esta es una buena opción para tener en cuenta.

Tabla de contenidos

  • 1 Estructura del proyecto
    • 1.1 El archivo Dockerfile
    • 1.2 El archivo shiny-server.conf
    • 1.3 El archivo shiny-server.sh
  • 2 Creación de imagen Docker con Shiny Server
  • 3 Compartir la imagen Docker
  • 4 Conclusiones

Estructura del proyecto

Para crear nuestra imagen Docker con Shiny Server vamos a utilizar una estructura de proyecto sencilla. Simplemente una carpeta app con la aplicación Shiny y tres archivos.

+-- app
	+-- server.R
	+-- ui.R
	+-- ...
+-- Dockerfile
+-- shiny-server.conf
+-- shiny-server.sh

Dockerfile es el archivo en el que se guardan las instrucciones para crear la imagen Docker, shiny-server.conf contiene la configuración del servidor Shiny y shiny-server.sh es un script para ejecutar al lanzar el programa.

El archivo Dockerfile

Podemos crear un archivo Dockerfile como el que se muestra a continuación. En el que se indica en la primera línea que nos vamos a basar en la última imagen disponible de r-base, aunque siempre podemos indicar una versión concreta de R. Para lo que es necesario reemplazar latest por la versión necesaria.

FROM r-base:latest

RUN apt-get update && apt-get install -y \
    sudo \
    gdebi-core \
    pandoc \
    pandoc-citeproc \
    libcurl4-gnutls-dev \
    libxt-dev \
    libssl-dev \
    libxml2 \
    libxml2-dev

# Instalacion de shiny server
RUN wget --no-verbose https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/VERSION -O "version.txt" && \
    VERSION=$(cat version.txt)  && \
    wget --no-verbose "https://s3.amazonaws.com/rstudio-shiny-server-os-build/ubuntu-12.04/x86_64/shiny-server-$VERSION-amd64.deb" -O ss-latest.deb && \
    gdebi -n ss-latest.deb && \
    rm -f version.txt ss-latest.deb

# Instalacion de los paquetes necesarios
RUN R -e "install.packages(c('shiny'), repos='http://cran.rstudio.com/')"

COPY shiny-server.conf  /etc/shiny-server/shiny-server.conf
COPY /myapp /srv/shiny-server/
COPY shiny-server.sh /usr/bin/shiny-server.sh

EXPOSE 80

CMD ["/usr/bin/shiny-server.sh"]

En la siguiente instrucción vamos a actualizar algunos de los paquetes de la distribución de Linux. Garantizando así tener las última versión de los paquetes. Posteriormente, necesitamos instalar Shiny Server, el cual descargamos directamente.

Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
En Analytics Lane
Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane

Una vez instalado Shiny Server hay que instalar los paquetes necesarios, para lo que se usara el install.packages() de R. En este punto es importante no olvidarse de ningún paquete, ya que después puede que no funcione correctamente la aplicación dentro de la imagen.

Una vez realizada las instalaciones copiaremos nuestro programa en la imagen. El archivo de configuración de Shiny Server en la ruta /etc/shiny-server/ y el programa en /srv/shiny-server/. Además de esto también copiaremos es script a /usr/bin.

Finalmente expondremos el puerto en el que se encuentra la aplicación, en el caso del ejemplo el 80, e indicaremos que se lance el script para iniciar el servidor.

Publicidad


El archivo shiny-server.conf

En este archivo indicaremos las opciones de configuración de Shiny Server. Entre lo que se encuentra el usuario con el que se debe ejecutar la aplicación, el puerto donde se publicará y las ubicaciones de la aplicación y los logs. Por ejemplo, se puede usar el siguiente archivo.

run_as shiny;

server {
  listen 80;

  location / {
    site_dir /srv/shiny-server;
    log_dir /var/log/shiny-server;
    directory_index on;
  }
}

El archivo shiny-server.sh

Este archivo es prescindible, pero facilita ejecutar los comandos para iniciar el programa. Por seguridad crearemos la carpeta para los logs y le cambiaremos los permisos. Acto seguido ejecutamos shiny-server indicando la ruta en la que se almacenarán los archivos de log.

#!/bin/sh

mkdir -p /var/log/shiny-server
chown shiny.shiny /var/log/shiny-server

exec shiny-server >> /var/log/shiny-server.log 2>&1

Creación de imagen Docker con Shiny Server

Una vez creado el proyecto tendremos que crear la imagen. Para lo que, en la carpeta del proyecto, donde se encuentra el archivo Dockerfile ejecutaremos la siguiente instrucción:

docker build -t shiny_app . 

En donde shiny_app lo podemos reemplazar por un nombre que sea significativo para nosotros. Una vez creada la imagen, lo que puede tardar algunos minutos dependiendo de los paquetes que sean necesario instalar, podemos ejecutar la imagen con el comando.

docker run --rm --name shiny_app -p 3000:80 shiny_app 

En el cual hemos redireccionado el puerto 80 de la aplicación al 3000. Lo que nos permite acceder, si todo ha ido bien, a la aplicación con el navegador a través de la dirección http://localhost:3000/.

Publicidad


Compartir la imagen Docker

En este punto solamente nos queda compartir la imagen, para lo que podemos guardar esta en un archivo tar.Algo que se consigue con el comando save de docker.

docker save shiny_app > shiny_app.tar

Conclusiones

En esta entrada hemos visto como es relativamente fácil crear una imagen Docker con Shiny Server para distribuir nuestro trabajo. El uso de Docker nos garantiza qué se usa exactamente las versiones de R, Shiny y los paquetes que realmente queremos, evitando problemas que pueden aparecer al cambiar las versiones.

Imagen de Mike Goad en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 5 / 5. Votos emitidos: 1

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
  • Nuevo conversor de timestamp Unix en el laboratorio de Analytics Lane
  • Calculadora de Contrastes de Hipótesis: interpreta correctamente el p-valor y toma decisiones estadísticas con confianza
  • Calculadora de Tamaño del Efecto: la herramienta clave para entender cuánto importa realmente una diferencia
  • Simulador de DBSCAN: descubre cómo encontrar clusters reales (y ruido) sin fijar K
  • Conversor de Colores: convierte, compara y valida cualquier color en tiempo real
  • Analytics Lane lanza su Generador de UUIDs: identificadores únicos, seguros y listos para producción en segundos
  • 1200 publicaciones en Analytics Lane
  • Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas

Publicado en: Herramientas, R Etiquetado como: Docker, GUI

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

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

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

mayo 21, 2026 Por Daniel Rodríguez

De la Regresión Logística al Scorecard: La Transformación Matemática

mayo 19, 2026 Por Daniel Rodríguez

Noticias

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

mayo 18, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Visualización de valores faltantes en el conjunto de datos planets Visualización de valores faltantes con Missingno publicado el diciembre 6, 2021 | en Python
  • pandas Pandas: Cambiar los tipos de datos en los DataFrames publicado el julio 15, 2021 | en Python
  • Comparar archivos en Visual Studio Code publicado el enero 10, 2024 | en Herramientas
  • Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos publicado el mayo 21, 2026 | en Ciencia de datos, Opinión

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto