Для связки между сервером Express и базой данных MongoDB в рамках вашего приложения Vue2 + Express + MongoDB с использованием Docker, вам следует использовать Docker Compose для описания и запуска окружения с несколькими контейнерами.
Вам потребуется следующий файл `docker-compose.yml`:
```yaml
version: '3'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- 8080:8080
volumes:
- ./frontend:/app
command: npm run serve
depends_on:
- server
server:
build:
context: ./server
dockerfile: Dockerfile
ports:
- 3000:3000
volumes:
- ./server:/app
depends_on:
- database
database:
image: mongo
ports:
- 27017:27017
volumes:
- ./data:/data/db
```
Здесь frontend, server и database - это сервисы для вашего фронтенда Vue2, сервера Express и базы данных MongoDB соответственно. Каждый сервис определяется в своей собственной папке, где есть соответствующий Dockerfile для сборки образа.
Чтобы запустить ваше приложение в Docker, выполните команду:
```bash
docker-compose up --build
```
Теперь ваше приложение будет запущено в Docker контейнерах, и они будут взаимодействовать друг с другом, используя имена сервисов (frontend, server, database) в качестве хостов.
Что касается настройки деплоя приложения и обновления сервера, вам следует настроить CI/CD процесс в GitLab для автоматического развертывания приложения на сервере.
Для этого вы можете использовать SSH для подключения к серверу и выполнять необходимые команды для обновления кода и перезапуска сервера Express. Ниже пример пайплайна для GitLab CI/CD, который может быть полезным:
```yaml
deploy:
stage: deploy
script:
- ssh root@example "cd /var/www/app.example && git pull origin master"
- ssh root@example "cd /var/www/app.example && npm install"
- ssh root@example "cd /var/www/app.example && npm run build"
- ssh root@example "pm2 restart app.example"
```
В этом примере пайплайна для деплоя мы подключаемся к серверу по SSH и выполняем команды `git pull` для обновления кода, `npm install` для установки зависимостей, `npm run build` для сборки фронтенда и `pm2 restart` для перезапуска сервера Express с использованием pm2.
Вы можете настроить переменные окружения в GitLab CI/CD для хранения конфиденциальных данных, таких как SSH_PRIVATE_KEY, и использовать их в вашем пайплайне.
Таким образом, вы сможете автоматически развертывать и обновлять ваше приложение Vue2 + Express на сервере с помощью GitLab CI/CD и SSH.