Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 关闭Docker容器上的木偶演员脚本_Node.js_Docker_Puppeteer - Fatal编程技术网

Node.js 关闭Docker容器上的木偶演员脚本

Node.js 关闭Docker容器上的木偶演员脚本,node.js,docker,puppeteer,Node.js,Docker,Puppeteer,目前,我正在EC2实例上的docker容器中运行一个木偶脚本(每小时一次)。下面是代码(如果您正在阅读此文件,请感谢您Edi Imanto) 你需要这样做。请按照下面的说明。简而言之,您需要使用--init选项运行容器,以启动一个简单的进程,如PID 0,该进程将负责在铬实例与Puppeter分离后获取铬实例 const cron = require('node-cron') const execute = require('child_process').exec const puppetee

目前,我正在EC2实例上的docker容器中运行一个木偶脚本(每小时一次)。下面是代码(如果您正在阅读此文件,请感谢您Edi Imanto)

你需要这样做。请按照下面的说明。简而言之,您需要使用
--init
选项运行容器,以启动一个简单的进程,如PID 0,该进程将负责在铬实例与Puppeter分离后获取铬实例

const cron = require('node-cron')
const execute = require('child_process').exec
const puppeteer = require('puppeteer')
const processIDs = []

const createBrowser = async () => {
    const browser = await puppeteer.launch()
    processIDs.push(browser.process().pid)
    return browser
}

const closeBrowser = async (browser) => {
    await browser.close()
    for (let i = 0; i < processIDs.length; i++) {
        execute(`kill -9 ${processIDs[i]}`)
    }
}


const runHourly = async () => {
    const browser = await createBrowser()    
    const await = doSomething()  

    const closeTab = await page.close()
    const exit = await closeBrowser(browser)
}

cron.schedule('* 0/1 * * *', () => {
    await runHourly()
})
FROM node:10.17.0-slim@sha256:17df3b18bc0f1d3ebccbd91e8ca8e2b06d67cb4dc6ca55e8c09c36c39fd4535d

RUN  apt-get update \
  && apt-get install -y python \  
  && apt-get install -y build-essential \ 
  && apt-get install -y wget --no-install-recommends \
  && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
  && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
  && apt-get update \
  && apt-get install -y google-chrome-unstable --no-install-recommends \
  && rm -rf /var/lib/apt/lists/* \
  && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \
  && chmod +x /usr/sbin/wait-for-it.sh 

USER root

# Install Puppeteer under /node_modules so it's available system-wide
WORKDIR /usr/src/app 
COPY .  . 
ADD package.json package-lock.json /
RUN npm install

CMD ["node", "transfer.js"]