pptraas.com
pptraas.com copied to clipboard
Move to app engine flex
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$
App engine flex costs way more than zeit... it also deploys slower....
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....