Docker映像无法运行?

时间:2018-08-09 20:49:22

标签: docker shiny dockerfile

我使用适用于Windows 7的Docker工具箱创建了我的Shiny应用程序的图像。我使用了此webpage上的说明,当我在Docker终端中转到以下命令行时,我的映像将​​无法运行:

docker run -p 80:80 myimage

我得到的错误是:

chown: invalid.user: shiny.shiny

我对此进行了搜索,我认为这是由于用户冲突造成的,当Shiny尝试访问其他文件时,不能这样做,因为某些文件可用于root用户。我没有使用终端模式和所有docker terminal命令的经验。

如何通过docker Terminal可持续解决以上问题?我的下一步是将docker映像部署在Digital Ocean服务器上,以便可以在网站上使用Shiny应用程序。

Dockerfile代码如下:

# Install R version 3.5
FROM r-base:3.5.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
RUN wget --no-verbose https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.7.907-amd64.deb && \
    gdebi shiny-server-1.5.7.907-amd64.deb


# Install R packages that are required
RUN R -e "install.packages(c('Benchmarking', 'plotly', 'DT'), repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('shiny', repos='https://cloud.r-project.org/')"

# 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"]

1 个答案:

答案 0 :(得分:0)

您需要做的就是添加“ shiny”组的“ shiny”用户。有很多方法可以做到,我决定创建一个带有主文件夹的用户,并指定了uid和gid,可以根据自己的喜好自定义它。这是您应该使用的Dockerfile:

FROM r-base:3.5.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 

# Add shiny user
RUN groupadd  shiny \
&& useradd --gid shiny --shell /bin/bash --create-home shiny


# Download and install ShinyServer
RUN wget --no-verbose https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.7.907-amd64.deb && \
    gdebi shiny-server-1.5.7.907-amd64.deb


# Install R packages that are required
RUN R -e "install.packages(c('Benchmarking', 'plotly', 'DT'), repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('shiny', repos='https://cloud.r-project.org/')"

# 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"]