DevOps ~ Docker ~ Containerize React app - rohit120582sharma/Documentation GitHub Wiki
FROM node:14.4.0
WORKDIR /usr/src/app
COPY ./package*.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "run", start"]
version: '3'
services:
	web:
		container_name: react-dev-app
		stdin_open: true
		build:
			context: .
			dockerfile: Dockerfile.dev
		ports:
			- '3000:3000'
		volumes:
			# don't try to map node_modules inside the container
			- /usr/src/app/node_modules
			# map current working directory in host machine to container
			- ./:/usr/src/app
		# for Windows to detect changes
		environment:
			- CHOKIDAR_USEPOLLING=true
	tests:
		container_name: react-test-app
		stdin_open: true
		build:
			context: .
			dockerfile: Dockerfile.dev
		volumes:
			- /usr/src/app/node_modules
			- ./:/usr/src/app
		# override the default command
		command: ["npm", "run", "test"]$ docker-compose up --buildThen you can hit http://localhost:3000 in your browser.
# prepare the container for building react app
FROM node:14.4.0
WORKDIR /usr/src/app
COPY ./package*.json ./
RUN npm install
COPY ./ ./
RUN npm run build
# prepare nginx
FROM nginx:1.16.0-alpine
COPY --from=0 /usr/src/app /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
# fire up nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]$ docker build -t <some-image-name> .
$ docker run --name <some-container-name> -p 8080:80 <some-image-name>Then you can hit http://localhost:8080 in your browser.