awesome-compose/react-nginx
Guillaume Lours 298ebd2b45
Fix security issues (#244)
* fix security issues in react-rust-postgres sample
* fix security issues in react-java-mysql sample
* fix security issues in react-express-mysql sample
* fix security issues in react-express-mongodb sample
* fix security issues in react-nginx sample
* fix security issues in angular sample
* fix security issues in django sample
* fix security issues in vuejs sample

Signed-off-by: Guillaume Lours <guillaume.lours@docker.com>
2022-05-16 21:20:20 +02:00
..
.nginx add react-nginx (#121) 2021-10-10 17:19:58 +02:00
public add react-nginx (#121) 2021-10-10 17:19:58 +02:00
src add react-nginx (#121) 2021-10-10 17:19:58 +02:00
.dockerignore add react-nginx (#121) 2021-10-10 17:19:58 +02:00
.gitignore add react-nginx (#121) 2021-10-10 17:19:58 +02:00
compose.yaml Adopt Compose v2 (#240) 2022-05-10 11:59:25 +02:00
Dockerfile add react-nginx (#121) 2021-10-10 17:19:58 +02:00
output.png add react-nginx (#121) 2021-10-10 17:19:58 +02:00
package-lock.json Fix security issues (#244) 2022-05-16 21:20:20 +02:00
package.json fix security issues on react-nginx sample 2022-03-12 19:05:18 +01:00
README.md Adopt Compose v2 (#240) 2022-05-10 11:59:25 +02:00

Compose sample application

An project deploy React Application with Nginx

Project structure:

├── compose.yaml
├── Dockerfile
├── .dockerignore
├── .nginx
│   └── nginx.conf
├── package.json
├── public
│   ├── ...
│   └── robots.txt
├── README.md
├── src
│   ├── ...
│   └── App.js
└── yarn.lock

compose.yaml

services:
  frontend:
    build:
      context: .
    container_name: frontend
    ports:
      - "80:80"

The compose file defines an application with an services frontend. When deploying the application, docker compose maps port 80 of the frontend service container to port 80 of the host as specified in the file.

Deploy with docker compose

$ docker compose up -d
Building frontend
Sending build context to Docker daemon   1.49MB

Step 1/17 : FROM node:lts AS development
 ---> 9153ee3e2ced
Step 2/17 : WORKDIR /app
 ---> Using cache
 ---> a7909d92148a
Step 3/17 : COPY package.json /app/package.json
 ---> 2e690dfe99b2
Step 4/17 : COPY package-lock.json /app/package-lock.json
 ---> dd0132803f43
 .....
Step 16/17 : COPY --from=build /app/build .
 ---> Using cache
 ---> 447488bdf601
Step 17/17 : ENTRYPOINT ["nginx", "-g", "daemon off;"]
 ---> Using cache
 ---> 6372a67cf86f
Successfully built 6372a67cf86f
Successfully tagged react-nginx_frontend:latest

Expected result

Listing containers must show containers running and the port mapping as below:

$ docker ps

CONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS              PORTS                               NAMES
b6d00a4974ce   react-nginx_frontend   "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   frontend

After the application start, navigate to http://localhost in your browser: page

Stop and remove the containers

$ docker compose down
Stopping frontend ... done
Removing frontend ... done
Removing network react-nginx_default