在哪里运行';主要';Dockercontainer的脚本

在哪里运行';主要';Dockercontainer的脚本,docker,docker-compose,Docker,Docker Compose,请原谅这个更基本的问题。我正在处理Docker映像,它运行时的唯一目的是执行一个名为ga_extract.R的脚本。我对应该在哪里运行这个命令以及如何运行感到困惑 我有一个Dockerfile: FROM rocker/tidyverse:latest ADD install_packages.R /tmp/install_packages.R RUN apt-get update && apt-get install -y \ less \ vim &

请原谅这个更基本的问题。我正在处理Docker映像,它运行时的唯一目的是执行一个名为ga_extract.R的脚本。我对应该在哪里运行这个命令以及如何运行感到困惑

我有一个Dockerfile:

FROM rocker/tidyverse:latest
ADD install_packages.R /tmp/install_packages.R
RUN apt-get update && apt-get install -y \
    less \
    vim  && \
      Rscript /tmp/install_packages.R && \
      rm -R /tmp/*
但据我所知,Dockerfile只与容器的构建相关,即设置?我会尝试在Dockerfile中运行我的Rscript吗?尝试在末尾添加此行,但没有发生任何事情,脚本没有执行
CMD Rscript ga_extract.R

我还有一个docker compose文件,如下所示:

version: "3.5"
services:
  ga_extract_marketing:
    build:
      context: .
    environment:
      start_date: "2020-11-13"
      start_date: "2020-11-13"
ENTRYPOINT ["Rscript", "ga_extract.R"]
惯例是在docker compose中的某个地方运行我的rscript吗?我想这正是我想要的,但我不确定怎么做。我读了一些关于ENTRYPOINT Vs.CMD的博客,但我有点不确定

如果运行容器的全部目的是使用
Rscript ga_extract.R
每天执行一次
ga_extract.R
,那么“正确”的方法是什么

请注意,docker compose中的env变量(这两个日期)是运行R脚本所必需的。那么从操作顺序来看,脚本必须在docker compose运行期间或之后调用

我也尝试了以下方法: 在Dockerfile中,我添加了
ENTRYPOINT[“Rscript ga_extract.R”]
,但这给出了一个错误:

ERROR: for ga_extract_marketing  Cannot start service ga_extract_marketing: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"Rscript ga_extract.R\": executable file not found in $PATH": unknown
ga_extract.R位于根目录中。我还尝试将入口点更改为
docker entrypoint.sh
,然后在
docker entrypoint.sh
中放入
Rscript ga_extract.R
,但我得到了类似的错误

即使该命令被识别,我也不确定它是否能工作,因为我无法判断docker compose中的env变量是否在脚本运行之前设置好。我使用以下命令运行容器:

docker-compose build
docker-compose up -d
在运行最后一个命令之后,我得到了错误


更一般地说,我只是对正确的方法感到困惑。如何运行Rscript ga_extract.R?

您的入口点缺少一个逗号

试着这样做:

version: "3.5"
services:
  ga_extract_marketing:
    build:
      context: .
    environment:
      start_date: "2020-11-13"
      start_date: "2020-11-13"
ENTRYPOINT ["Rscript", "ga_extract.R"]

应该在运行时提取环境变量。

您的入口点缺少一个逗号

试着这样做:

version: "3.5"
services:
  ga_extract_marketing:
    build:
      context: .
    environment:
      start_date: "2020-11-13"
      start_date: "2020-11-13"
ENTRYPOINT ["Rscript", "ga_extract.R"]
应在运行时提取环境变量