From 508eb82ff4439091e4951aae8de2e715434b70d0 Mon Sep 17 00:00:00 2001 From: acidumirae Date: Sun, 12 Mar 2023 07:43:40 +0800 Subject: [PATCH] Production build --- .gitignore | 3 ++- Dockerfile | 11 ++++++++++- nginx.conf | 29 +++++++++++++++++++++++++++++ package.json | 4 ++-- run.sh | 15 +++++++++++++++ 5 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 nginx.conf create mode 100755 run.sh diff --git a/.gitignore b/.gitignore index dbf0821..3675648 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules/* \ No newline at end of file +node_modules/* +build/* diff --git a/Dockerfile b/Dockerfile index 7c96859..e03e574 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,15 +13,24 @@ WORKDIR /usr/src/app ENV PATH /usr/src/app/node_modules/.bin:$PATH ENV NODE_ENV=$NODE_ENV +# install nginx +RUN apk update +RUN apk add nginx + # install app dependencies COPY package.json ./ COPY package-lock.json ./ +COPY nginx.conf ./ + +COPY run.sh ./ + RUN npm install # add app COPY . ./ # start app -CMD ["npm", "start"] +CMD /bin/sh ./run.sh + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..b9f717a --- /dev/null +++ b/nginx.conf @@ -0,0 +1,29 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + server { + gzip on; + listen 3000; + server_name localhost; + root /usr/src/app/build; + + include /etc/nginx/mime.types; + + location /nginx_status { + stub_status on; + access_log off; + } + + location / { + try_files $uri $uri/ /index.html; + } + } +} + diff --git a/package.json b/package.json index 01110bc..2efd48f 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "axios": "^0.24.0" }, "scripts": { - "start": "react-scripts start -e .env", - "build": "react-scripts build -e .env", + "start": "react-scripts start -e .env.development", + "build": "react-scripts build -e .env.production", "test": "react-scripts test", "eject": "react-scripts eject" }, diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..a346abc --- /dev/null +++ b/run.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env sh +set -e +set -x + +export NODE_ENV="${NODE_ENV:-development}" + +if [ $NODE_ENV == "development" ]; then + # this runs webpack-dev-server with hot reloading + npm start +else + # build the app and serve it via nginx + npm run build + nginx -g 'daemon off;' -c /usr/src/app/nginx.conf + nginx -c /usr/src/app/nginx.conf +fi \ No newline at end of file