mirror of
https://github.com/elyby/emails-renderer.git
synced 2024-11-08 13:42:43 +05:30
Add Docker configuration.
Implemented graceful stopping.
This commit is contained in:
parent
a772fb7542
commit
0d21dc8bf8
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
dist
|
23
.travis.yml
23
.travis.yml
@ -7,7 +7,28 @@ cache:
|
||||
directories:
|
||||
- node_modules
|
||||
|
||||
script:
|
||||
stages:
|
||||
- test
|
||||
- name: deploy
|
||||
if: branch = master
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: test
|
||||
script:
|
||||
- yarn lint
|
||||
- yarn tsc
|
||||
- yarn build:quiet
|
||||
- stage: deploy
|
||||
services:
|
||||
- docker
|
||||
before_script:
|
||||
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
||||
script:
|
||||
- export DOCKER_TAG="${TRAVIS_TAG:-dev}"
|
||||
- >
|
||||
docker build
|
||||
--target app
|
||||
-t elyby/emails-renderer:$DOCKER_TAG
|
||||
.
|
||||
- docker push elyby/emails-renderer:$DOCKER_TAG
|
||||
|
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@ -0,0 +1,35 @@
|
||||
FROM node:12.4.0-alpine AS build
|
||||
|
||||
RUN mkdir -p /build
|
||||
WORKDIR /build
|
||||
|
||||
# Dependencies to build node-canvas
|
||||
RUN apk add --no-cache build-base g++ python cairo-dev jpeg-dev pango-dev giflib-dev
|
||||
|
||||
COPY scripts /build/scripts
|
||||
COPY webpack-utils /build/webpack-utils
|
||||
COPY package.json /build/
|
||||
COPY yarn.lock /build/
|
||||
|
||||
RUN yarn install
|
||||
|
||||
COPY . /build
|
||||
|
||||
RUN yarn build:quiet \
|
||||
&& rm dist/*.html \
|
||||
&& rm dist/stats.json
|
||||
|
||||
RUN yarn install --prod \
|
||||
&& rm node_modules/.yarn-integrity
|
||||
|
||||
|
||||
FROM node:12.4.0-alpine AS app
|
||||
|
||||
RUN mkdir -p /usr/src/app
|
||||
WORKDIR /usr/src/app
|
||||
EXPOSE 3000
|
||||
|
||||
COPY --from=build /build/node_modules /usr/src/app/node_modules
|
||||
COPY --from=build /build/dist /usr/src/app/
|
||||
|
||||
CMD ["node", "/usr/src/app/app.js"]
|
@ -33,6 +33,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"fastify": "^2.4.1",
|
||||
"fastify-graceful-shutdown": "^2.0.1",
|
||||
"fastify-static": "^2.4.0",
|
||||
"react": "^16.8.4",
|
||||
"react-dom": "^16.8.4",
|
||||
|
@ -1,20 +1,21 @@
|
||||
/* eslint-env node */
|
||||
/* eslint-disable spaced-comment */
|
||||
import React from 'react';
|
||||
import ReactDOMServer from 'react-dom/server';
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import createFastify from 'fastify';
|
||||
// @ts-ignore
|
||||
import fastifyGracefulShutdown from 'fastify-graceful-shutdown';
|
||||
import fastifyStatic from 'fastify-static';
|
||||
import { AddressInfo } from 'net';
|
||||
|
||||
import ReactDOMServer from 'react-dom/server';
|
||||
import { Html } from 'components';
|
||||
import App, { Params } from 'App';
|
||||
|
||||
const fastify = createFastify({
|
||||
logger: {
|
||||
level: 'warn',
|
||||
level: 'info',
|
||||
},
|
||||
});
|
||||
|
||||
@ -27,6 +28,8 @@ interface GetTemplateUrlParams {
|
||||
template: string;
|
||||
}
|
||||
|
||||
fastify.register(fastifyGracefulShutdown);
|
||||
|
||||
fastify.register(fastifyStatic, {
|
||||
root: path.join(__dirname, 'assets'),
|
||||
prefix: '/assets/',
|
||||
@ -72,8 +75,7 @@ fastify.get<GetTemplateQueryParams, GetTemplateUrlParams>('/templates/:locale/:t
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
await fastify.listen(3000);
|
||||
fastify.log.info(`server listening on ${(fastify.server.address() as AddressInfo)!.port}`);
|
||||
await fastify.listen(3000, '0.0.0.0');
|
||||
} catch (err) {
|
||||
fastify.log.error(err);
|
||||
process.exit(1);
|
||||
|
22
yarn.lock
22
yarn.lock
@ -2731,11 +2731,11 @@ extend@~3.0.2:
|
||||
"extended-translations-loader@file:webpack-utils/extended-translations-loader":
|
||||
version "1.0.0"
|
||||
dependencies:
|
||||
"@lesechos/image-size-loader" "file:../../.cache/yarn/v4/npm-extended-translations-loader-1.0.0-fe1c90c6-5a79-4e5e-8995-7c33cb1db7d9-1559762166005/node_modules/image-size-loader"
|
||||
"@lesechos/image-size-loader" "file:../../.cache/yarn/v4/npm-extended-translations-loader-1.0.0-72c3a128-fbb9-4e3d-9a24-9f2972009e1b-1559771604821/node_modules/image-size-loader"
|
||||
glob "^7.1.4"
|
||||
loader-utils "^1.2.3"
|
||||
qs "^6.0.0"
|
||||
text2png-loader "file:../../.cache/yarn/v4/npm-extended-translations-loader-1.0.0-fe1c90c6-5a79-4e5e-8995-7c33cb1db7d9-1559762166005/node_modules/text2png-loader"
|
||||
text2png-loader "file:../../.cache/yarn/v4/npm-extended-translations-loader-1.0.0-72c3a128-fbb9-4e3d-9a24-9f2972009e1b-1559771604821/node_modules/text2png-loader"
|
||||
tmp "^0.0.33"
|
||||
|
||||
external-editor@^3.0.3:
|
||||
@ -2814,6 +2814,14 @@ fast-safe-stringify@^2.0.6:
|
||||
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2"
|
||||
integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==
|
||||
|
||||
fastify-graceful-shutdown@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fastify-graceful-shutdown/-/fastify-graceful-shutdown-2.0.1.tgz#2ed228dc8eb8b225cdff5ed5b714264462e64d38"
|
||||
integrity sha512-7G+K5Iqo1VVPsykkn3yuXnZvwzAmdIOQWvHzfGZ7yJQW3y7DnHtbiVzLdYBMvbNHQf9nt4LN483heTzGaqz8LA==
|
||||
dependencies:
|
||||
fastify-plugin "^1.5.0"
|
||||
fastparallel "^2.3.0"
|
||||
|
||||
fastify-plugin@^1.5.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-1.6.0.tgz#c8198b08608f20c502b5dad26b36e9ae27206d7c"
|
||||
@ -2851,6 +2859,14 @@ fastify@^2.4.1:
|
||||
secure-json-parse "^1.0.0"
|
||||
tiny-lru "^6.0.1"
|
||||
|
||||
fastparallel@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/fastparallel/-/fastparallel-2.3.0.tgz#1e709bfb6a03993f3857e3ce7f01311ce7602613"
|
||||
integrity sha1-HnCb+2oDmT84V+POfwExHOdgJhM=
|
||||
dependencies:
|
||||
reusify "^1.0.0"
|
||||
xtend "^4.0.1"
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
|
||||
@ -6803,7 +6819,7 @@ ws@^6.0.0:
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
|
||||
xtend@^4.0.0, xtend@~4.0.1:
|
||||
xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
|
||||
|
Loading…
Reference in New Issue
Block a user