- backend/
- database/
- frontend/
- webserver/
- .dockerignore
- .gitignore
- docker-compose.yml
- Dockerfile
# Build & run & open browser
docker-compose up --build -d && open http://localhost/
# Stop
docker-compose stop && docker system prune <<< y
# DOCKER | |
.dockerignore | |
Dockerfile | |
docker-compose.yml | |
# OS | |
.DS_Store | |
# NPM | |
backend/node_modules | |
backend/package-lock.json | |
frontend/node_modules | |
frontend/package-lock.json | |
# APP | |
frontend/dist | |
# DATABASE | |
database/* | |
!database/.gitkeep | |
# OS | |
.DS_Store | |
# NPM | |
backend/node_modules | |
backend/package-lock.json | |
frontend/node_modules | |
frontend/package-lock.json | |
# APP | |
frontend/dist | |
# DATABASE | |
database/* | |
!database/.gitkeep |
# Build & run & open browser
docker-compose up --build -d && open http://localhost/
# Stop
docker-compose stop && docker system prune <<< y
version: "3.7" | |
services: | |
database: | |
container_name: docker_database | |
build: | |
context: ./ | |
target: database_stage | |
working_dir: /home/mysite.com | |
restart: unless-stopped | |
volumes: | |
- ./database:/data/db | |
environment: | |
- MONGO_INITDB_DATABASE=mysite | |
networks: | |
- docker_network | |
frontend: | |
container_name: docker_frontend | |
build: | |
context: ./ | |
target: frontend_stage | |
working_dir: /home/mysite.com | |
depends_on: [ database ] | |
restart: "no" | |
backend: | |
container_name: docker_backend | |
build: | |
context: ./ | |
target: backend_stage | |
working_dir: /home/mysite.com | |
restart: unless-stopped | |
depends_on: [ frontend ] | |
networks: | |
- docker_network | |
webserver: | |
container_name: docker_webserver | |
build: | |
context: ./ | |
target: nginx_stage | |
restart: unless-stopped | |
ports: | |
- 80:80 | |
depends_on: [ "backend" ] | |
networks: | |
- docker_network | |
networks: | |
docker_network: |
# -------------------- DATABASE ---------------------- # | |
FROM mongo:latest as database_stage | |
WORKDIR /home/mysite.com | |
VOLUME [ "/data/db" ] | |
ENV MONGO_INITDB_DATABASE=mysite | |
EXPOSE 27017 | |
CMD [ "mongod" ] | |
# -------------------- FRONTEND ---------------------- # | |
FROM node:latest as frontend_stage | |
WORKDIR /home/mysite.com | |
RUN chown -R node:node ./ | |
COPY frontend/package*.json ./ | |
RUN npm install --silent | |
COPY frontend/ ./ | |
RUN npm run build | |
# -------------------- BACKEND ---------------------- # | |
FROM node:latest as backend_stage | |
WORKDIR /home/mysite.com | |
COPY backend/package*.json ./ | |
RUN npm install --silent | |
COPY backend/ ./ | |
EXPOSE 3000 | |
CMD [ "npm", "start" ] | |
# -------------------- WEBSERVER ---------------------- # | |
FROM nginx:latest as nginx_stage | |
WORKDIR /usr/share/nginx/html | |
COPY --from=frontend_stage /home/mysite.com/dist ./frontend/ | |
COPY webserver/*.html ./errors/ | |
COPY webserver/nginx.conf /etc/nginx/conf.d/default.conf | |
EXPOSE 80 | |
CMD [ "nginx", "-g", "daemon off;" ] |