Проблемы с загрузкой в ​​докер-контейнере? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть веб-проект, который работает в Docker Container.Я обнаружил странную проблему и не знаю ее основную причину.Позвольте мне попытаться объяснить.

Все запросы пользователей из приложения Vue.js отправляются на Node.js HTTP web server.С помощью веб-интерфейса пользователи могут загружать csv файлов.

Когда пользователи нажимают определенные кнопки в браузере, они отправляют запросы на веб-сервер HTTP:

getFile (fileName) {
    axios.post('/csv', {file_name: fileName}).then((response) => {
        const url = URL.createObjectURL(new Blob([iconv.encode(response.data, 'win1251')]))
        const link = document.createElement('a')
        link.href = url
        link.setAttribute('download', fileName)
        document.body.appendChild(link)
        link.click()
    }).catch((error) => {
        console.log(error)
    })
}

Код ниже, который находится внутри узла.js HTTP веб-сервер загружает файл csv с удаленного SFTP-сервера в локальную систему Docker Container и отправляет этот файл в ответ браузеру:

router.post('/', (req, res) => {
  const fileName = req.body.file_name

  const remotePath = '/reports/' + fileName

  const localePath = path.join(process.env.HOME || process.env.USERPROFILE, 'Downloads/' + fileName)

  sftp.connect(config.sftpServer, 'on').then(() => {
    sftp.fastGet(remotePath, localePath, {}).then(() => {
      res.header('Content-type', 'text/csv; charset=windows-1251')
      res.sendFile(localePath)
      sftp.end()
    }).catch((err) => {
      sftp.end()
      console.log(err, 'fastGet method error')
    })
  }).catch((err) => {
    sftp.end()
    console.log(err, 'connect method error')
  })

  try {
    fs.readdirSync(path.join(process.env.HOME || process.env.USERPROFILE, 'Downloads/')).forEach(file => {
      console.log(file);
    });
    fs.unlink(localePath)
  } catch (err) {
    console.log(err)
  }
})

PS Я использую библиотеку ssh2-sftp-client загрузить файлы csv с удаленного сервера SFTP.

Проблема заключается в том, что после 10 загрузок различных файлов csv функция загрузки перестает работать.Мне кажется, что-то не так с памятью контейнера докера.

Мой Dockerfile выглядит довольно просто:

FROM node:latest
COPY / ./
EXPOSE 3010
RUN mkdir -p /root/Downloads
CMD ["node", "server/bin/www"]

Как решить эту проблему?Где именно моя ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...