Skip to content
This repository has been archived by the owner on Oct 19, 2023. It is now read-only.

Move to app engine flex #14

Open
ebidel opened this issue Feb 13, 2018 · 2 comments
Open

Move to app engine flex #14

ebidel opened this issue Feb 13, 2018 · 2 comments

Comments

@ebidel
Copy link
Contributor

ebidel commented Feb 13, 2018

Scale + speed + uptime!

Here's what I'm using in other projects.
Dockerfile

FROM node:9.5-slim

MAINTAINER Eric Bidelman <ebidel@>

# See https://crbug.com/795759
#RUN apt-get update && apt-get install -yq libgconf-2-4

# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update && apt-get install -y wget --no-install-recommends \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get purge --auto-remove -y curl \
    && rm -rf /src/*.deb

# It's a good idea to use dumb-init to help prevent zombie chrome processes.
ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
RUN chmod +x /usr/local/bin/dumb-init

COPY . /app/

WORKDIR /app

COPY package.json .
RUN yarn --production

COPY server.mjs .
# RUN chmod +x server.mjs

# Add user so we don't need --no-sandbox.
RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
    && mkdir -p /home/pptruser/Downloads \
    && chown -R pptruser:pptruser /home/pptruser \
    && chown -R pptruser:pptruser /app

# # Run everything after as non-privileged user.
USER pptruser

EXPOSE 8080

ENTRYPOINT ["dumb-init", "--"]
CMD ["npm", "run", "start"]

app.yaml

runtime: custom
env: flex

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 4

resources:
  cpu: 4
  memory_gb: 16 # cpu * [0.9 - 6.5] - 0.4
  disk_size_gb: 100

skip_files:
- ^(.*/)?tests
- ^(.*/)?.*\.md$
@PaulKinlan
Copy link
Member

App engine flex costs way more than zeit... it also deploys slower....

@PaulKinlan
Copy link
Member

Also, this assumes that we are not caching the entire imported docker file... technically there should be no reason to ever to do anything before "RUN yarn --production" again....

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants