Analytics_TM
Analytics_TM

Reputation: 523

ERROR: (gcloud.app.deploy) You must provide your own Dockerfile when using a custom runtime

I am trying to schedule an R job on Google Cloud using App Engine. I am following the article

https://code.markedmondson.me/4-ways-schedule-r-scripts-on-google-cloud-platform/

However, when I try to deploy the app using gcloud app deploy --project shiny-demo I get the following error

Enabling service [appengineflex.googleapis.com] on project [shiny-demo]...
Waiting for async operation operations/acf.33c5e6da-6f9e-4e66-b7d3-f0611eddc0ce to complete...
Operation finished successfully. The following command can describe the Operation details:
 gcloud services operations describe operations/tmo-acf.33c5e6da-6f9e-4e66-b7d3-f0611eddc0ce
Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) You must provide your own Dockerfile when using a custom runtime. Otherwise provide a "runtime" field with one of the supported runtimes.

I do have a Dockerfile in the same folder as my yaml file, however somehow it does not recognize the Dockerfile. Below is my yaml file:

# app.yaml file
runtime: custom
env: flex

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

env_variables:
  GCS_AUTH_FILE: authkey.json

My Dockerfile:

# DOCKER
FROM trestletech/plumber
LABEL maintainer="mark"
RUN export DEBIAN_FRONTEND=noninteractive; apt-get -y update \
 && apt-get install -y libcairo2-dev \
    libcurl4-openssl-dev \
    libgmp-dev \
    libpng-dev \
    libssl-dev \
    libxml2-dev \
    make \
    pandoc \
    pandoc-citeproc \
    zlib1g-dev
RUN ["install2.r", "-r 'https://cloud.r-project.org'", "readr", "googleCloudStorageR", "bigrquery", "Rcpp", "digest", "crayon", "withr", "mime", "R6", "jsonlite", "xtable", "magrittr", "httr", "curl", "testthat", "devtools", "hms", "shiny", "httpuv", "memoise", "htmltools", "openssl", "tibble", "remotes"]
RUN ["installGithub.r", "MarkEdmondson1234/googleAuthR@7917351", "hadley/rlang@ff87439"]
WORKDIR /payload/
COPY [".", "./"]

EXPOSE 8080
ENTRYPOINT ["R", "-e", "pr <- plumber::plumb(commandArgs()[4]); pr$run(host='0.0.0.0', port=8080)"]
CMD ["myscript.R"]

I am a bit new to Docker.

Adding the picture for folder structure:

enter image description here

Upvotes: 3

Views: 1146

Answers (1)

Juancki
Juancki

Reputation: 1872

Does your Dockerfile name is Dockerfile (first letter uppercase)?

Windows sometimes saves the file internally as .txt.

A Dockerfile must be created with no extension. To do this in Windows, create the file with your editor of choice, then save it with the notation "Dockerfile" (including the quotes).

Is your Dockefile in the right path at the same level as the app.yaml?

Upvotes: 6

Related Questions