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. 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/dev.js b/template/docker/dev.js new file mode 100644 index 0000000..119435d --- /dev/null +++ b/template/docker/dev.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/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/package.json b/template/package.json index ca254a3..e11553d 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:dev": "node docker/dev.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: "/"