@Demonstr66

Как организовать развёртывание для Vue2 + Express?

Разрабатываю локально приложение фронт Vue2, бек Express, бд Mongo через docker.
При разработке я проксирую запросы к api на порт где запускаю сервер

devServer: {
    proxy: {
      '^/api': {
        target: 'http://192.168.0.132:3000',
        ws: true,
        changeOrigin: true
      },
    }
  }

А сам сервер подключается к mongo таким образом

await mongoose.connect('mongodb://127.0.0.1:27017/example', {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    })

С деплоем раньше не имел дело, подскажите, как организовать это всё на сервере. Сначала я создал 2 виртуальных хоста в nginx api.example, и app.example. И хотел просто обращаться к серверу, но не очень понимаю как в такой связке сервер должен общаться с бд и правильный ли вообще такой подход?

CI/CD хочу настроить через gitlab. Для фронта всё просто, собираю и закидываю в нужную папку, а как обновлять сервер?

Пайплайн фронта

build site:
  image: node:16
  stage: build
  script:
    - npm ci
    - npm run build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

deploy:
  image: alpine
  stage: deploy
  script:
    - apk add --no-cache rsync openssh
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_dsa
    - chmod 600 ~/.ssh/id_dsa
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - rsync -rav --delete dist/ root@example:/var/www/app.example/html
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Hramoff
Если я правильно понял, то ты пока не знаешь, как организовать адрес подключения к бд в коде:

1. Адрес и данные для авторизации можно передавать переменными окружения
2. Если известен адрес виртуальной машины с базой, то лучше сразу указывать его в коде
3. Обычно адреса не используются, а вместо них доменные имена, но нужен днс.

И относительно nginx - раз используются доменные имена, то не забудь добавить их или в /etc/hosts, если нет днс сервера
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы