• 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
      • Ajuste de Curvas
      • Calculadora de Matrices
    • 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

Docker, GUI

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.

La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
En Analytics Lane
La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)

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

  • La caverna del consumo, o cómo Greenspan miraba calzoncillos para hacer política monetaria – El bestiario de los indicadores económicos absurdos (parte 1)
  • La vanidad del paisaje, o por qué un becario sale a contar grúas a Manhattan – El bestiario de los indicadores económicos absurdos (parte 2)
  • Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)
  • El bestiario de los indicadores económicos absurdos: El zoo patrio
  • El Binning en Credit Scoring: El Arte de Discretizar Variables
  • Las fórmulas con DNI, o cómo dividir cualquier cosa entre cualquier otra cosa puede acabar publicado en un titular serio – El bestiario de los indicadores económicos absurdos (parte 5)
  • Cómo comparar tendencias con gráficos de líneas en Matplotlib: guía práctica paso a paso
  • Analytics Lane lanza la versión 1.2 del laboratorio con nuevas herramientas de ajuste de curvas y cálculo matricial
  • Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

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

Las fórmulas con DNI, o cómo dividir cualquier cosa entre cualquier otra cosa puede acabar publicado en un titular serio – El bestiario de los indicadores económicos absurdos (parte 5)

julio 2, 2026 Por Daniel Rodríguez

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

julio 1, 2026 Por Daniel Rodríguez

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

junio 30, 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
  • ¡Nuevo video! Aprende a combinar DataFrames en Pandas como un experto publicado el julio 31, 2025 | en Noticias
  • Panel de widgets de Windows 11 mostrando noticias destacadas y clima. Cómo eliminar las noticias en Windows 11 y recuperar tu concentración publicado el junio 26, 2025 | en Herramientas
  • pandas Optimización de memoria en Pandas: Usar tipos de datos personalizados para manejar grandes conjuntos de datos publicado el abril 28, 2025 | en Python
  • Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito publicado el julio 1, 2026 | en Noticias

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.1 (11)

Aplicar el método D’Hondt en Excel

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