finally: fix docker build and run app

This commit is contained in:
Chika 2020-11-15 15:01:04 +03:00
parent f0ebe75840
commit c27186e14f
3 changed files with 20 additions and 29 deletions

View File

@ -1,15 +1,17 @@
FROM node:14-alpine FROM node:14-alpine as build
ENV NODE_ENV production WORKDIR /app
WORKDIR /home/app COPY package.json /app/package.json
COPY package.json ./
RUN npm install RUN npm install
COPY build ./ RUN npm install -g cross-env
COPY . /app
RUN npm run build
EXPOSE 3001 EXPOSE 3001
CMD ["node", "server.js"] CMD ["node", "build/server.js"]

View File

@ -1,6 +1,5 @@
{ {
"name": "evo_calculator", "name": "evo_calculator",
"version": "0.0.1",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@apollo/client": "^3.2.5", "@apollo/client": "^3.2.5",
@ -25,7 +24,6 @@
"express-ntlm": "^2.5.2", "express-ntlm": "^2.5.2",
"graphql": "^15.4.0", "graphql": "^15.4.0",
"helmet": "^4.1.0", "helmet": "^4.1.0",
"http-errors": "^1.8.0",
"lodash": "^4.17.20", "lodash": "^4.17.20",
"luxon": "^1.25.0", "luxon": "^1.25.0",
"mobx": "^6.0.0", "mobx": "^6.0.0",
@ -62,13 +60,10 @@
"@types/morgan": "^1.9.1", "@types/morgan": "^1.9.1",
"@types/node": "^14.14.6", "@types/node": "^14.14.6",
"@types/pluralize": "^0.0.29", "@types/pluralize": "^0.0.29",
"@types/react-router-dom": "^5.1.5", "@types/react-router-dom": "^5.1.6",
"@types/styled-components": "^5.1.2", "@types/styled-components": "^5.1.2",
"@types/styled-system": "^5.1.10", "@types/styled-system": "^5.1.10",
"agentkeepalive": "^4.1.3",
"cross-env": "^7.0.2", "cross-env": "^7.0.2",
"dotenv": "^8.2.0",
"faker": "^5.1.0",
"http-proxy-middleware": "^1.0.6", "http-proxy-middleware": "^1.0.6",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"webpack-cli": "^4.0.0", "webpack-cli": "^4.0.0",
@ -77,13 +72,13 @@
"scripts": { "scripts": {
"test": "craco test", "test": "craco test",
"eject": "react-scripts eject", "eject": "react-scripts eject",
"dev": "cross-env NODE_ENV=development concurrently -p name -c \"yellow,magenta,blue\" -n \"webpack-server,nodemon-server,CRA\" \"yarn dev:server:webpack\" \"yarn dev:server:nodemon\" \"yarn dev:client\"", "dev": "cross-env NODE_ENV=development concurrently -p name -c \"yellow,magenta,blue\" -n \"webpack-server,nodemon-server,CRA\" \"npm run dev:server:webpack\" \"npm run dev:server:nodemon\" \"npm run dev:client\"",
"dev:client:only": "craco start", "dev:client:only": "craco start",
"dev:client": "wait-on -l tcp:3001 && craco start", "dev:client": "wait-on -l tcp:3001 && craco start",
"dev:server": "concurrently -p name -c \"yellow,magenta\" -n \"webpack-server,nodemon-server\" \"yarn dev:server:webpack\" \"yarn dev:server:nodemon\"", "dev:server": "concurrently -p name -c \"yellow,magenta\" -n \"webpack-server,nodemon-server\" \"npm run dev:server:webpack\" \"npm run dev:server:nodemon\"",
"dev:server:webpack": "webpack --config webpack.config.server.js --watch", "dev:server:webpack": "webpack --config webpack.config.server.js --watch",
"dev:server:nodemon": "rimraf build/server.js && wait-on -l build/server.js && nodemon build/server.js", "dev:server:nodemon": "rimraf build/server.js && wait-on -l build/server.js && nodemon build/server.js",
"build": "yarn build:client && yarn build:server", "build": "npm run build:client && npm run build:server",
"build:client": "craco build", "build:client": "craco build",
"build:server": "cross-env NODE_ENV=production webpack --config webpack.config.server.js" "build:server": "cross-env NODE_ENV=production webpack --config webpack.config.server.js"
}, },

View File

@ -1,23 +1,17 @@
import bodyParser from 'body-parser'; import bodyParser from 'body-parser';
import compression from 'compression'; import compression from 'compression';
import cors from 'cors'; import cors from 'cors';
// import cookieParser from "cookie-parser";
import express from 'express'; import express from 'express';
import ntlm from 'express-ntlm';
import helmet from 'helmet'; import helmet from 'helmet';
import morgan from 'morgan'; import morgan from 'morgan';
import path from 'path'; import path from 'path';
import 'reflect-metadata'; import 'reflect-metadata';
import routes from './routes';
import ntlm from 'express-ntlm';
import { SERVER_PORT } from './../core/constants/urls'; import { SERVER_PORT } from './../core/constants/urls';
import routes from './routes';
const isDevelopmentMode = process.env.NODE_ENV === 'development'; const isDevelopmentMode = process.env.NODE_ENV === 'development';
const buildDir = path.join(
process.cwd(),
process.env.NODE_ENV === 'development' ? '/build' : '',
);
const app = express(); const app = express();
/** AUTHENTICATION */ /** AUTHENTICATION */
@ -31,7 +25,7 @@ if (!isDevelopmentMode)
/** AUTHENTICATION */ /** AUTHENTICATION */
/**EXTENTIONS */ /**EXTENTIONS */
app.use(cors({ origin: isDevelopmentMode && '*', credentials: true })); app.use(cors({ origin: isDevelopmentMode && '*' }));
app.use(helmet({ contentSecurityPolicy: { reportOnly: true } })); app.use(helmet({ contentSecurityPolicy: { reportOnly: true } }));
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use( app.use(
@ -39,7 +33,6 @@ app.use(
extended: true, extended: true,
}), }),
); );
// app.use(cookieParser());
app.use(compression()); app.use(compression());
app.use(morgan(isDevelopmentMode ? 'dev' : 'tiny')); app.use(morgan(isDevelopmentMode ? 'dev' : 'tiny'));
/**EXTENTIONS */ /**EXTENTIONS */
@ -50,14 +43,15 @@ app.use('/', routes);
/**CLIENT */ /**CLIENT */
if (!isDevelopmentMode) { if (!isDevelopmentMode) {
app.use(express.static(buildDir)); app.use(express.static(path.resolve('build')));
app.get('*', function (req, res) { app.get('*', function (req, res) {
res.sendFile(path.join(buildDir, 'index.html')); res.sendFile('index.html');
res.send('ok');
}); });
} }
/**CLIENT */ /**CLIENT */
console.log(process.env.NODE_ENV);
app.listen(SERVER_PORT, () => { app.listen(SERVER_PORT, () => {
console.log('ENV: ', process.env.NODE_ENV);
console.log(`Server now listening on port: ${SERVER_PORT}`); console.log(`Server now listening on port: ${SERVER_PORT}`);
}); });