Last active
March 1, 2024 00:29
-
-
Save yossisp/b63ab99613ada9ca3cbadb8a4dbfca33 to your computer and use it in GitHub Desktop.
nginx setup for multiple docker-compose containers (react.js app, node.js server)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# nginx configuration for docker-compose containers running locally | |
server { | |
listen 80; | |
listen [::]:80; | |
#Docker DNS | |
resolver 127.0.0.11; | |
server_name localhost; | |
access_log /var/log/nginx/appstore.access.log; | |
error_log /var/log/nginx/appstore.error.log; | |
location / { | |
root /usr/share/nginx/html; | |
index index.html index.htm; | |
try_files $uri $uri/ /index.html; | |
} | |
location /api { | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto $scheme; | |
#hack to prevent nginx to resolve container's host on start up | |
set $docker_host "appstore-bl-server"; | |
proxy_pass http://$docker_host:3000; | |
} | |
error_page 500 502 503 504 /50x.html; | |
location = /50x.html { | |
root /usr/share/nginx/html; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# docker-compose for react.js, nginx Dockerfile | |
# before the docker-compose is run new docker network must be created: | |
# docker network create --driver bridge appstore-net | |
version: '3.5' | |
services: | |
appstore-front: | |
container_name: appstore-front-production | |
build: | |
context: . | |
dockerfile: Dockerfile-prod1 | |
ports: | |
- '80:80' | |
networks: | |
- appstore-net | |
external_links: | |
- appstore-bl-server-production | |
networks: | |
appstore-net: | |
external: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# docker-compose for node.js server | |
# before the docker-compose is run new docker network must be created: | |
# docker network create --driver bridge appstore-net | |
version: '3' | |
services: | |
appstore-bl-server: | |
container_name: appstore-bl-server-production | |
build: | |
dockerfile: Dockerfile-prod2 | |
context: . | |
volumes: | |
- ".:/usr/src/app" | |
ports: | |
- "3000:3000" | |
networks: | |
- appstore-net | |
networks: | |
appstore-net: | |
external: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Dockerfile for react.js app and nginx | |
# build environment | |
FROM node:8-alpine as builder | |
WORKDIR /usr/src/app | |
ENV PATH /usr/src/app/node_modules/.bin:$PATH | |
COPY package.json /usr/src/app/package.json | |
RUN npm install | |
COPY . /usr/src/app | |
RUN npm run build --loglevel verbose | |
# production environment | |
FROM nginx:1.13.9-alpine | |
RUN rm -rf /etc/nginx/conf.d | |
COPY conf /etc/nginx | |
COPY --from=builder /usr/src/app/build /usr/share/nginx/html | |
EXPOSE 80 | |
CMD ["nginx", "-g", "daemon off;"]"-g", "daemon off;"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Dockerfile for node.js server | |
FROM node:8-alpine | |
# Create app directory | |
WORKDIR /usr/src/app | |
# Install app dependencies | |
# A wildcard is used to ensure both package.json AND package-lock.json are copied | |
# where available (npm@5+) | |
COPY package*.json ./ | |
RUN npm install --only=production | |
# Bundle app source | |
COPY . . | |
EXPOSE 3000 | |
CMD [ "npm", "start" ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment