Вы можете использовать файл docker-compose.yml
для определения и запуска мультиконтейнерных Docker приложений. И затем с помощью одной команды вы можете собрать и запустить все свои службы. Вы можете запускать как Linux, так и Windows программы и исполняемые файлы в Docker
. Docker создает тонкие виртуальные среды для ваших приложений. Вот пример того, что вы хотите. Это структура папок:
|--client
|--Dockerfile
|--components
|--index.js
|--server
|--Dockerfile
|--index.js
|--nginx
|-- Dockerfile
|--default.conf
|--docker.compose.yml
Dockerfile
для клиента реакции:
FROM node:alpine as builder
WORKDIR '/app'
COPY ./package.json . /
RUN npm install
COPY . .
RUN npm run build
Dockerfile
для nginx
FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf
default.conf
для nginx
upstream client {
server client:3000;
}
upstream api {
server api:5000;
}
server {
listen 80;
location / {
proxy_pass http://client;
}
location /sockjs-node {
proxy_pass http://client;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://api;
}
}
Dockerfile
для узла / express сервер
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD [ "npm", "run", "start" ]
docker-compose.yml
файл. Вы можете переключить mon go с любой базой данных, которую вы хотите использовать для вашего API. Вы можете создавать и запускать все с помощью docker-compose up --build
из основного каталога проекта (где находится файл docker-compose
)
version: '3'
services:
nginx:
restart: always
build:
dockerfile: Dockerfile
context: ./nginx
ports:
- '80:80'
mongo:
container_name: mongo
image: mongo
ports:
- '27017:27017'
api:
restart: always
build:
dockerfile: Dockerfile
context: ./server
volumes:
- /app/node_modules
- ./server:/app
links:
- mongo
ports:
- '5000:5000'
depends_on:
- mongo
client:
build:
dockerfile: Dockerfile
context: ./client
volumes:
- /app/node_modules
- ./client:/app
links:
- api