Sharing code between flexible environment modules in a GAE project

前端 未结 3 922
清歌不尽
清歌不尽 2021-01-26 08:41

I\'m structuring my GAE (flex) project as a number of services:

- my-project/
  - services/
    - service_1/
      - service_1.yaml
    - service_2/
      - serv         


        
3条回答
  •  北海茫月
    2021-01-26 09:22

    Copying my answer from a similar question. Multiple services with different dockerfiles on GAE Flexible

    tl;dr: build a separate docker image, push it to GCR, deploy using that image.

    Specify a custom runtime. Build the image locally, tag it, and push it to Google Container Registry (GCR) then, deploy your service, specifying a custom service file, and specifying the remote image on GCR using the --image-url option.

    Here's an example that accomplishes different entrypoints in 2 services that share the same code: ...this is assuming that the "flex" and not "standard" app engine offering is being used.

    lets say you have a project called my-proj with a default service that is not important and a second service called queue-processor which is using much of the same code from the same directory. Create a separate dockerfile for it called QueueProcessorDockerfile and a separate app.yaml called queue-processor-app.yaml to tell google app engine what i want to happen.

    QueueProcessorDockerfile

    FROM node:10
    # Create app directory
    WORKDIR /usr/src/app
    COPY package.json ./
    COPY yarn.lock ./
    RUN npm install -g yarn
    RUN yarn
    # Bundle app source
    COPY . .
    CMD [ "yarn", "process-queue" ]
    

    *of course i have a "process-queue" script in my package.json queue-processor-app.yaml

    runtime: custom
    env: flex
    ... other stuff...
    ...
    
    1. build and tag the docker image Check out googles guide here -> https://cloud.google.com/container-registry/docs/pushing-and-pulling docker build -t eu.gcr.io/my-proj/queue-processor -f QueueProcessorDockerfile .
    2. push it to GCR docker push eu.gcr.io/my-proj/queue-processor
    3. deploy the service, specifying which yaml config file google should use, as well as the image url you have pushed gcloud app deploy queue-processor-app.yaml --image-url eu.gcr.io/my-proj/queue-processor

提交回复
热议问题