FROM rocker/shiny:latest # Set working directory inside container WORKDIR /code # Install additional system dependencies including libglpk for igraph RUN apt-get update && apt-get install -y \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ libnlopt-dev \ libicu-dev \ libgdal-dev \ libgeos-dev \ libproj-dev \ libv8-dev \ libnode-dev \ libglpk-dev \ libglpk40 \ zlib1g-dev \ libbz2-dev \ liblzma-dev \ && rm -rf /var/lib/apt/lists/* # Install DT dependencies first RUN install2.r --error \ htmltools \ htmlwidgets \ jsonlite \ crosstalk \ magrittr \ promises # Then install the main packages (excluding QTLseqr and vcfR for now) RUN install2.r --error \ nloptr \ lme4 \ emmeans \ readxl \ plotly \ shinyjs \ shinyWidgets \ DT \ RColorBrewer \ ggrepel \ openxlsx # Install tidyverse and igraph RUN install2.r --error tidyverse igraph # Install data.table separately RUN install2.r --error data.table # Install BiocManager RUN R -e "install.packages('BiocManager', repos='https://cloud.r-project.org/')" # Install Bioconductor dependencies RUN R -e "BiocManager::install(c('GenomicRanges', 'IRanges', 'S4Vectors', 'Biostrings', 'Rsamtools', 'GenomeInfoDb'), ask=FALSE, update=FALSE)" # Install vcfR package RUN install2.r --error vcfR # Install remotes for GitHub installations RUN install2.r --error remotes # Install QTLseqr from GitHub RUN R -e "remotes::install_github('bmansfeld/QTLseqr', upgrade='never', dependencies=FALSE)" # Create www directory and health file directly RUN mkdir -p /code/www && echo "OK" > /code/www/health # Copy app code COPY app.R /code/ # Expose the port Shiny will run on EXPOSE 7860 # Run the app with corrected host address CMD ["R", "--quiet", "-e", "shiny::runApp('/code', host='0.0.0.0', port=7860)"]