在Docker容器中加载问题?

时间:2019-02-15 06:20:46

标签: javascript node.js docker vue.js docker-container

我有一个可以在Docker Container中工作的Web项目。我发现了奇怪的问题,不知道问题的主要原因。让我尝试解释一下。

来自Vue.js应用程序的所有用户请求都转到Node.js HTTP web server。通过Web界面,用户可以加载csv个文件。

用户单击浏览器中的特定按钮时,他们向HTTP Web服务器发出发布请求:

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)
    })
}

下面的代码位于Node.js HTTP Web服务器内部,它将来自远程SFTP服务器的csv文件加载到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)
  }
})

P.S。我使用ssh2-sftp-client库从远程SFTP服务器加载csv文件。

问题是在下载10个不同的csv文件后,下载功能停止工作。在我看来,docker容器内存出了问题。

我的Dockerfile看起来很简单:

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

如何解决此问题?我的错误到底在哪里?

0 个答案:

没有答案