zes*_*sla 4 r shiny docker shiny-server
我正在尝试将我闪亮的应用程序放入 docker 容器中。我闪亮的应用程序在我的本地计算机上运行良好。但是在 dockerize 我闪亮的应用程序之后,我的本地主机上总是有错误消息,例如The application failed to start. The application exited during initialization..
我不知道为什么会这样。我是码头工人的新手。运行docker镜像时如何查找错误日志?我需要日志才能知道出了什么问题。
这是我的码头文件:
# Install R version 3.6
FROM r-base:3.6.0
# Install Ubuntu packages
RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
libcurl4-gnutls-dev \
libcairo2-dev/unstable \
libxt-dev \
libssl-dev
# Download and install ShinyServer (latest version)
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
# Install R packages that are required
# TODO: add further package if you need!
RUN R -e "install.packages(c( 'tidyverse', 'ggplot2','shiny','shinydashboard', 'DT', 'plotly', 'RColorBrewer'), repos='http://cran.rstudio.com/')"
# Copy configuration files into the Docker image
COPY shiny-server.conf /etc/shiny-server/shiny-server.conf
COPY /app /srv/shiny-server/
# Make the ShinyApp available at port 80
EXPOSE 80
# Copy further configuration files into the Docker image
COPY shiny-server.sh /usr/bin/shiny-server.sh
CMD ["/usr/bin/shiny-server.sh"]
Run Code Online (Sandbox Code Playgroud)
我构建了图像并运行如下:
docker build -t myshinyapp .
docker run -p 80:80 myshinyapp
Run Code Online (Sandbox Code Playgroud)
通常,只需使用以下命令即可找到任何(活动或死亡)容器的日志:
docker logs full-container-name
Run Code Online (Sandbox Code Playgroud)
或者
docker logs CONTAINERID
Run Code Online (Sandbox Code Playgroud)
(替换容器的实际 ID)
如前所述,这通常也适用于已停止(尚未删除)的容器,您可以将其列出:
docker container ls -a
Run Code Online (Sandbox Code Playgroud)
要不就
docker ps -a
Run Code Online (Sandbox Code Playgroud)
但是,有时您甚至不会有日志,因为根本没有创建容器(我认为,根据经验,这更适合您的情况)
这可能只是因为 docker 引擎无法分配您的服务定义需要可用的所有资源。
应用程序无法启动。应用程序在初始化期间退出
通常反映您的 docker 引擎无法获得所需的资源。
最常见的情况就是你的主机端口一样简单:
如果您有另一个服务(是否已被 dockerized)使用(例如)您想用于服务的端口(在您的情况下为端口 80),那么 Docker 将无法启动您的容器。
所以......简而言之......针对这种情况的最简单的解决方法(当您遇到此类问题时,您的第一次尝试)就是将主机上的任何其他端口(例如:)绑定8080到您的服务的 80 端口将在内部收听(在您的容器内):
docker run -p 8080:80 myshinyapp
Run Code Online (Sandbox Code Playgroud)
相同的原则适用于不可分配的卷(例如:尝试将一个卷绑定为只读,但实际上并不存在于主机中)
作为旁白评论/技巧:
由于您没有为容器设置名称,因此在查找其日志时需要使用容器 ID。
但是,您无需输入(或复制粘贴)完整的容器 ID(通常类似于:1283c66babea或更大),您只需输入前几位数字,它仍然可以按预期工作:
docker logs 1283c6或者docker logs 1283甚至docker logs 128
(当然......只要你没有任何其他128*****容器)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |