From e4db4574534592a77db2a486a265923b0a933963 Mon Sep 17 00:00:00 2001 From: alok Date: Tue, 13 Aug 2019 10:30:46 +0530 Subject: [PATCH 1/3] added docker for development --- template/docker/Dockerfile.dev | 16 ++++++++++++++++ template/docker/docker-compose.yml | 11 +++++++++++ template/docker/dockerRun.js | 10 ++++++++++ template/package.json | 1 + template/webpack.config.dev.js | 1 + 5 files changed, 39 insertions(+) create mode 100644 template/docker/Dockerfile.dev create mode 100644 template/docker/docker-compose.yml create mode 100644 template/docker/dockerRun.js diff --git a/template/docker/Dockerfile.dev b/template/docker/Dockerfile.dev new file mode 100644 index 0000000..6c1bb6c --- /dev/null +++ b/template/docker/Dockerfile.dev @@ -0,0 +1,16 @@ +#base image +FROM node:alpine + +#working directory +WORKDIR /app + +#copy package +COPY package.json . + +#install dependencies +RUN npm install + +#copy rest of source +COPY . . + +CMD ["npm","run","dev:hot"] diff --git a/template/docker/docker-compose.yml b/template/docker/docker-compose.yml new file mode 100644 index 0000000..33e7443 --- /dev/null +++ b/template/docker/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3" +services: + web: + build: + context: ../ + dockerfile: ./docker/Dockerfile.dev + ports: + - "8080:8080" + volumes: + - /app/node_modules + - ../:/app diff --git a/template/docker/dockerRun.js b/template/docker/dockerRun.js new file mode 100644 index 0000000..119435d --- /dev/null +++ b/template/docker/dockerRun.js @@ -0,0 +1,10 @@ +const Child_Process = require("child_process"); + +var args = process.argv.splice(2); + +Child_Process.execSync( + `docker-compose --file docker/docker-compose.yml up ${args}`, + { + stdio: "inherit" + } +); diff --git a/template/package.json b/template/package.json index ca254a3..1507b6f 100644 --- a/template/package.json +++ b/template/package.json @@ -7,6 +7,7 @@ "build": "webpack --config webpack.config.prod.js", "dev": "webpack-dev-server --config webpack.config.dev.js", "dev:hot": "npm run dev -- --hot", + "docker:devRun": "node docker/dockerRun.js", "test": "jest", "format": "pretty-quick", "lint": "eslint ./" diff --git a/template/webpack.config.dev.js b/template/webpack.config.dev.js index 83f09d4..0aaa9a2 100644 --- a/template/webpack.config.dev.js +++ b/template/webpack.config.dev.js @@ -8,6 +8,7 @@ module.exports = merge(baseConfig, { devServer: { contentBase: path.join(__dirname, "public"), compress: true, + host: "0.0.0.0", open: true, port: process.env.PORT, publicPath: "/" From bd7121db874c69e0b9bf6613348a27c7a4c3077f Mon Sep 17 00:00:00 2001 From: alok Date: Tue, 13 Aug 2019 10:32:17 +0530 Subject: [PATCH 2/3] modified script for development docker --- template/docker/{dockerRun.js => dev.js} | 0 template/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename template/docker/{dockerRun.js => dev.js} (100%) diff --git a/template/docker/dockerRun.js b/template/docker/dev.js similarity index 100% rename from template/docker/dockerRun.js rename to template/docker/dev.js diff --git a/template/package.json b/template/package.json index 1507b6f..e11553d 100644 --- a/template/package.json +++ b/template/package.json @@ -7,7 +7,7 @@ "build": "webpack --config webpack.config.prod.js", "dev": "webpack-dev-server --config webpack.config.dev.js", "dev:hot": "npm run dev -- --hot", - "docker:devRun": "node docker/dockerRun.js", + "docker:dev": "node docker/dev.js", "test": "jest", "format": "pretty-quick", "lint": "eslint ./" From 77596dbc4345025ed83cc2c0fc8d45591b82ebcc Mon Sep 17 00:00:00 2001 From: alok Date: Tue, 13 Aug 2019 10:42:50 +0530 Subject: [PATCH 3/3] updated readme for development inside docker --- README.md | 14 ++++++++++++++ package.json | 2 +- template/README.md | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a9cb0e0..135a109 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,10 @@ demo-app ├── .eslintignore ├── .prettierrc ├── .prettierignore +├── docker +│ ├── dev.js +│ ├── docker-compose.yml +│ └── Dockerfile.dev ├── public │ ├── favicon.ico │ ├── index.html @@ -64,6 +68,10 @@ demo-app ├── .eslintignore ├── .prettierrc ├── .prettierignore +├── docker +│ ├── dev.js +│ ├── docker-compose.yml +│ └── Dockerfile.dev ├── public │   ├── favicon.ico │   ├── index.html @@ -100,6 +108,12 @@ before running this first run `npm run build`. Start the development server on default port `8080`.
Starts server in hot mode but doesn't preserve state of component if any while reloading. +### `npm run docker:dev` + +Start the development server inside the docker container.
+Maps machines port `8080` to `docker` container port `8080`.
+Helpful in case you want to do development inside container keeping the environment same for everyone, removes the need for changing node version for different applications. + ### `npm run dev:hot` Start the development server on default port `8080`.
diff --git a/package.json b/package.json index eb91d74..4579a74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "create-react-webpack", - "version": "0.0.9", + "version": "0.1.0", "description": "create-react-webpack ", "main": "scripts/create.js", "bin": { diff --git a/template/README.md b/template/README.md index feaf35d..dac5ba9 100644 --- a/template/README.md +++ b/template/README.md @@ -28,6 +28,12 @@ Starts server in hot mode but doesn't preserve state of component if any while r Start the development server on default port `8080`.
Starts server in hot mode preserves state of component also if any while applying hot load patch. +### `npm run docker:dev` + +Start the development server inside the docker container.
+Maps machines port `8080` to `docker` container port `8080`.
+Helpful in case you want to do development inside container keeping the environment same for everyone, removes the need for changing node version for different applications. + ### `npm test` Launches Test Runner in the intreactive manner.