欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解

 更新時(shí)間:2023年11月09日 10:45:58   作者:路邊縣  
這篇文章主要為大家介紹了基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

鏡像內(nèi)置canvas依賴,瀏覽器,字體包

最近在做node截圖服務(wù),包含echart配置項(xiàng)和瀏覽器截圖。在本地環(huán)境開發(fā)好了之后部署容器發(fā)現(xiàn)下面問題

  • canvas包安裝不上
  • puppeteer運(yùn)行錯(cuò)誤
  • 沒有中文字體包。

接下來一步步解決問題,我們是docker部署, 首先需要選擇鏡像和編寫Dockerfile(或者流水線構(gòu)建編輯)

Dockerfile

FROM 自己打的鏡像:版本
WORKDIR /app
ADD . .
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true 
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
RUN npm i --registry=https://registry.npmmirror.com
EXPOSE 3030
CMD ["sh", "-c", "NODE_ENV=$NODE_ENV node ./app.js"]

鏡像

由于烏班圖和CentOS等系統(tǒng)漏洞太多安全掃描通不過公司不讓用,只能使用他們提供的基礎(chǔ)鏡像,基礎(chǔ)鏡像里面什么都沒有需要一頓安裝

根據(jù)canvas 文檔 的描述沒有找到前置依賴的文檔,導(dǎo)致老是安裝報(bào)錯(cuò),經(jīng)過摸索需要的依賴如下

步驟如下

# 安裝圖形化軟件和編譯器用于canvas依賴
apk add --update --no-cache make g++ jpeg-dev cairo-dev giflib-dev pango-dev libtool autoconf automake 
# 安裝 瀏覽器 node npm
apk add --update --no-cache chromium nodejs npm

總共安裝了238個(gè)包需要10多分鐘

安裝完成截圖發(fā)現(xiàn)沒有中文字體包,接下來就要把字體包拷貝到容器里面去了。

在另外一個(gè)控制臺輸入下面命令

# mac 字體地址 /System/Library/Fonts 其它自己查找
# 鏡像字體庫地址 /usr/share/fonts/ 不對自己查找下
# 查看運(yùn)行的鏡像 docker ps 找到需要的 CONTAINER ID
docker cp /System/Library/Fonts/ b0cda85d36:/usr/share/fonts/

然后鏡像里面查看一次運(yùn)行

cd /usr/share/fonts/
ls
mkfontscale
mkfontdir
fc-cache

然后運(yùn)行看下 fc-list :lang=zh 看下字體包 這樣就是ok的

在測試瀏覽器截圖的時(shí)候有個(gè)報(bào)錯(cuò)需要看下瀏覽器位置 找到它

cd /usr/bin
ls

然后修改js代碼 executablePath 指定一個(gè)地址或者在Dockerfile中設(shè)置環(huán)境變量

puppeteer.launch({
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    executablePath: '/usr/bin/chromium-browser',
})

下一步新建文件測試

cd /tmp
npm i canvas puppeteer
touch canvas.js
touch puppeteer.js
vi canvas.js
vi puppeteer.js

canvas.js

const fs = require('fs')
const { createCanvas, loadImage } = require('canvas')
const canvas = createCanvas(1200, 500)
const context = canvas.getContext('2d')
context.fillStyle = '#000'
context.fillRect(0, 0, 1200, 500)
context.font = 'bold 70pt Menlo'
context.textAlign = 'center'
context.textBaseline = 'top'
context.fillStyle = '#3574d4'
const text = 'Hello, World! 你好,世界'
const textWidth = context.measureText(text).width
context.fillRect(600 - textWidth / 2 - 10, 170 - 5, textWidth + 20, 120)
context.fillStyle = '#fff'
context.fillText(text, 600, 170)
const buffer = canvas.toBuffer('image/png')
fs.writeFileSync('./canvas.png', buffer)

puppeteer.js

const puppeteer = require("puppeteer");
puppeteer
    .launch({
        args: ['--no-sandbox', '--disable-setuid-sandbox'],
        executablePath: '/usr/bin/chromium-browser',
     })
    .then(async browser => {
      const page = await browser.newPage();
      await page.goto("https://www.baidu.com");
      await page.screenshot({ path: "puppeteer.png" });
      await browser.close();
    });

在下一步就是運(yùn)行測試了

node canvas.js
node puppeteer.js
ls

最后看下這兩個(gè)圖片正常嗎

沒問題刪除測試東西打鏡像了

rm -rf /tmp/*

以上是我碰到的問題,有問題歡迎討論和交流,更多關(guān)于Alpine Linux構(gòu)建node-web鏡像的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nodejs async異步常用函數(shù)總結(jié)(推薦)

    nodejs async異步常用函數(shù)總結(jié)(推薦)

    這篇文章主要介紹了nodejs async異步常用函數(shù)總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-11-11
  • node.js中stream流中可讀流和可寫流的實(shí)現(xiàn)與使用方法實(shí)例分析

    node.js中stream流中可讀流和可寫流的實(shí)現(xiàn)與使用方法實(shí)例分析

    這篇文章主要介紹了node.js中stream流中可讀流和可寫流的實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了node.js stream流可讀流和可寫流基本分類、原理、定義、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • node.js使用fs讀取文件出錯(cuò)的解決方案

    node.js使用fs讀取文件出錯(cuò)的解決方案

    在本篇文章里我們給大家?guī)硪黄P(guān)于node.js使用fs讀取文件出錯(cuò)的解決辦法,有需要的朋友們參考下。
    2019-10-10
  • nodejs 終端打印進(jìn)度條實(shí)例代碼

    nodejs 終端打印進(jìn)度條實(shí)例代碼

    本篇文章主要介紹了nodejs 終端打印進(jìn)度條實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • nodejs中用npm初始化來創(chuàng)建package.json的實(shí)例講解

    nodejs中用npm初始化來創(chuàng)建package.json的實(shí)例講解

    今天小編就為大家分享一篇nodejs中用npm初始化來創(chuàng)建package.json的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例

    服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • npm?install的--save和--save-dev使用說明(推薦)

    npm?install的--save和--save-dev使用說明(推薦)

    這篇文章主要介紹了npm?install的--save和--save-dev使用說明,文中給大家提到了各個(gè)命令的區(qū)別及各種安裝參數(shù)的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • 總結(jié)Node.js中的一些錯(cuò)誤類型

    總結(jié)Node.js中的一些錯(cuò)誤類型

    NodeJS 的錯(cuò)誤處理讓人痛苦,在很長的一段時(shí)間里,大量的錯(cuò)誤被放任不管。但是要想建立一個(gè)健壯的 Node.js 程序就必須正確的處理這些錯(cuò)誤,而且這并不難學(xué)。下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • Koa從零搭建到Api實(shí)現(xiàn)項(xiàng)目的搭建方法

    Koa從零搭建到Api實(shí)現(xiàn)項(xiàng)目的搭建方法

    這篇文章主要介紹了Koa從零搭建到Api實(shí)現(xiàn)項(xiàng)目的搭建方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • NodeJS制作爬蟲全過程

    NodeJS制作爬蟲全過程

    這篇文章主要介紹了NodeJS制作爬蟲的全過程,包括項(xiàng)目建立,目標(biāo)網(wǎng)站分析、使用superagent獲取源數(shù)據(jù)、使用cheerio解析、使用eventproxy來并發(fā)抓取每個(gè)主題的內(nèi)容等方面,有需要的小伙伴參考下吧。
    2014-12-12

最新評論