我正在容器中部署Shiny-server。缺省情况下,Shiny-server监听端口3838,下面是shiny-server.conf中的一段
# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;
# Define a server that listens on port 3838
server {
listen 3838;我想将此端口更改为80。显然,我可以启动容器实例,登录到它,并更改它,但我想在Dockerfile中更改它。
FROM rocker/shiny:3.5.1
RUN apt-get update && apt-get install libcurl4-openssl-dev libv8-3.14-dev -y &&\
mkdir -p /var/lib/shiny-server/bookmarks/shiny
# Download and install library
RUN R -e "install.packages(c('shinydashboard', 'shinyjs', 'V8'))"
# copy the app to the image COPY shinyapps /srv/shiny-server/
COPY "reports" "/srv/shiny-server/sample-apps/reports/"
# make all app files readable (solves issue when dev in Windows, but building in Ubuntu)
RUN chmod -R 755 /srv/shiny-server/
EXPOSE 80
CMD ["/usr/bin/shiny-server.sh"] Dockerfile中的最后一行有命令行选项吗?
发布于 2021-02-27 04:52:41
添加
RUN sed -i -e 's/\blisten 3838\b/listen 80/g' /path/to/shiny-server.conf所以也许最终会是这样的:
FROM rocker/shiny:3.5.1
RUN apt-get update && apt-get install libcurl4-openssl-dev libv8-3.14-dev -y &&\
mkdir -p /var/lib/shiny-server/bookmarks/shiny
# Download and install library
RUN R -e "install.packages(c('shinydashboard', 'shinyjs', 'V8'))"
# copy the app to the image COPY shinyapps /srv/shiny-server/
COPY "reports" "/srv/shiny-server/sample-apps/reports/"
# make all app files readable (solves issue when dev in Windows, but building in Ubuntu)
RUN chmod -R 755 /srv/shiny-server/
RUN sed -i -e 's/\blisten 3838\b/listen 80/g' /path/to/shiny-server.conf
EXPOSE 80
CMD ["/usr/bin/shiny-server.sh"](我知道,如果不压缩多个层,效率可能会很低,如果您想要将sed行与前面的RUN命令组合在一起,请注意这一点。如果这是一个问题,您可能希望组合更多的RUN行。)
https://stackoverflow.com/questions/66392202
复制相似问题