如何在docker容器中与Supervisor一起运行Rserve?
我想在docker容器中运行Rserve(作为守护进程)。我的基本要求是我想有一个R程序作为后台进程运行。为了实现这一点,我创建了一个R文件,并尝试使用Rserve运行相同的文件。为此,我创建了supervisor.conf文件,其中包含以下条目如何在docker容器中与Supervisor一起运行Rserve?,r,docker,supervisord,rserve,R,Docker,Supervisord,Rserve,我想在docker容器中运行Rserve(作为守护进程)。我的基本要求是我想有一个R程序作为后台进程运行。为了实现这一点,我创建了一个R文件,并尝试使用Rserve运行相同的文件。为此,我创建了supervisor.conf文件,其中包含以下条目 [supervisord] nodaemon=true [program:rserve] command=/usr/bin/R CMD Rserve --slave --RS-conf /sri-app/rserve/rserve.co
[supervisord]
nodaemon=true
[program:rserve]
command=/usr/bin/R CMD Rserve --slave --RS-conf
/sri-app/rserve/rserve.conf --RS-source /sri-app/rserve/rserve-src.R
user=root
autostart=true
autorestart=true
stdout_logfile=/tmp/rserve_out.log
stderr_logfile=/tmp/rserve_err.log
environment=PATH="/usr/bin/R"
下面是“rserve.conf”文件的条目
我已将此supervisor.conf条目包含在dockerfile中,如下所示
CMD ["/sri-app/run_supervisord.sh"]
其中“run_supervisord.sh”包含以下条目
#!/bin/bash
/usr/bin/supervisord -c /sri-app/api-supervisor.conf
现在的问题是当我运行docker容器时遇到下面的错误
2019-11-13 10:39:48,738 INFO supervisord started with pid 102
2019-11-13 10:39:49,740 INFO spawned: 'rserve' with pid 105
2019-11-13 10:39:49,870 INFO exited: rserve (exit status 0; not
expected)
2019-11-13 10:39:50,873 INFO spawned: 'rserve' with pid 109
2019-11-13 10:39:50,999 INFO exited: rserve (exit status 1; not
expected)
2019-11-13 10:39:53,002 INFO spawned: 'rserve' with pid 112
2019-11-13 10:39:53,130 INFO exited: rserve (exit status 1; not
expected)
2019-11-13 10:39:56,134 INFO spawned: 'rserve' with pid 115
2019-11-13 10:39:56,264 INFO exited: rserve (exit status 1; not
expected)
2019-11-13 10:39:57,265 INFO gave up: rserve entered FATAL state, too
many start retries too quickly
有什么建议吗
更新:
Dockerfile条目
FROM ubuntu:16.04
EXPOSE 8080 6311 9000
# --- Project specific entries starts here --
RUN mkdir -p /sri-app/
RUN apt-get install default-jre -y
RUN apt-get install default-jdk -y
RUN R CMD javareconf
RUN apt-get install r-cran-rjava -y
RUN apt-get update
RUN apt-get install libgdal-dev libproj-dev libssl-dev -y
RUN apt-get update && apt-get install -y wget supervisor
COPY . /sri-app
WORKDIR sri-app
RUN R CMD build .
RUN R CMD INSTALL -l "/usr/local/lib/R/site-library/" sri_3.20.4.tar.gz
## Rserve
RUN wget http://www.rforge.net/Rserve/snapshot/Rserve_1.8-5.tar.gz \
&& R CMD INSTALL Rserve_1.8-5.tar.gz
ENV HEALTH_CHECK_URL http://localhost:8080/heartBeat
ENV ACTIVE_ACTIVE true
ENV IS_ENTRY_POINT true
ENV APP_NAME "sr-insights"
ENV NODE_NAME sri-service
ENV APP_UUID "7b24c1c4-9dc8-43e6-8738-bedb86bc0c22"
# -- project specific entries ends here ---
# -- I feel main concerns is in below set of entries ---
COPY runR.sh /sri-app/
COPY run_supervisord.sh /sri-app/
RUN chmod +x /sri-app/run_supervisord.sh
RUN chmod +x /sri-app/runR.sh
CMD ["/sri-app/run_supervisord.sh"]
张贴Dockerfile或基本图像通常不鼓励粘贴代码或终端窗口的屏幕截图。请将其替换为
Dockerfile
@DavidMaze删除的屏幕截图和Dockerfile粘贴内容的实际文本
FROM ubuntu:16.04
EXPOSE 8080 6311 9000
# --- Project specific entries starts here --
RUN mkdir -p /sri-app/
RUN apt-get install default-jre -y
RUN apt-get install default-jdk -y
RUN R CMD javareconf
RUN apt-get install r-cran-rjava -y
RUN apt-get update
RUN apt-get install libgdal-dev libproj-dev libssl-dev -y
RUN apt-get update && apt-get install -y wget supervisor
COPY . /sri-app
WORKDIR sri-app
RUN R CMD build .
RUN R CMD INSTALL -l "/usr/local/lib/R/site-library/" sri_3.20.4.tar.gz
## Rserve
RUN wget http://www.rforge.net/Rserve/snapshot/Rserve_1.8-5.tar.gz \
&& R CMD INSTALL Rserve_1.8-5.tar.gz
ENV HEALTH_CHECK_URL http://localhost:8080/heartBeat
ENV ACTIVE_ACTIVE true
ENV IS_ENTRY_POINT true
ENV APP_NAME "sr-insights"
ENV NODE_NAME sri-service
ENV APP_UUID "7b24c1c4-9dc8-43e6-8738-bedb86bc0c22"
# -- project specific entries ends here ---
# -- I feel main concerns is in below set of entries ---
COPY runR.sh /sri-app/
COPY run_supervisord.sh /sri-app/
RUN chmod +x /sri-app/run_supervisord.sh
RUN chmod +x /sri-app/runR.sh
CMD ["/sri-app/run_supervisord.sh"]