簡體   English   中英

Apify docker如何運行

[英]Apify how can docker run

使用 Node/Apify/Puppeteer 如何將我的應用程序容器化並在本地測試運行? 這是我的設置。

Dockerfile

# First, specify the base Docker image. 
# Note that you can use any other image from Docker Hub.
FROM node:14-alpine

# Resolves Error: EACCES: permission denied
USER root

# Second, copy just package.json 
COPY package.json ./

# Install NPM packages, skip optional and development dependencies to
RUN npm --quiet set progress=false \
 && npm install --only=prod --no-optional \
 && echo "Installed NPM packages:" \
 && npm list || true \
 && echo "Node.js version:" \
 && node --version \
 && echo "NPM version:" \
 && npm --version

# Next, copy the remaining files and directories with the source code.

COPY --chown=myuser . ./

# CMD node main.js

包.json

{
  "name": "actor-quick-start",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "apify": "^2.3.0",
    "cheerio": "^1.0.0-rc.11",
    "moment": "^2.29.3",
    "node-fetch": "^3.2.6",
    "puppeteer": "*"
  },
  "scripts": {
    "start": "node main.js"
  }
}

我能夠在本地運行。

$ node main.js
Launch script...
INFO  System info {"apifyVersion":"2.3.2","apifyClientVersion":"2.5.2","osType":"Darwin","nodeVersion":"v14.20.0"}
WARN  Neither APIFY_LOCAL_STORAGE_DIR nor APIFY_TOKEN environment variable is set, defaulting to APIFY_LOCAL_STORAGE_DIR="/Users/sdhangwattan/Documents/personal/testapp/my-first-act/apify_storage"
Launching Puppeteer...

但是,當我將我的應用程序構建為 docker 映像並運行它時,我得到了這個異常

C02V25E3HV2Q:my-first-act sdhangwattan$ docker run myfirstact:0.0.2
/usr/src/app/node_modules/bindings/bindings.js:121
        throw e;
        ^

Error: Error loading shared library /usr/src/app/node_modules/better-sqlite3-with-prebuilds/build/Release/better_sqlite3.node: Exec format error
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1189:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at bindings (/usr/src/app/node_modules/bindings/bindings.js:112:48)
    at Object.<anonymous> (/usr/src/app/node_modules/better-sqlite3-with-prebuilds/lib/database.js:9:24)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32) {
  code: 'ERR_DLOPEN_FAILED'

這是我的基本圖像的問題嗎? 我已經嘗試過 Apify 的基本圖像並且得到了類似的結果。 apify/actor-node:14&16

請幫忙指點!

COPY --chown=myuser . ./ COPY --chown=myuser . ./可能是問題所在。 除非您有一個帶有node_modules.dockerignore文件,否則您的本地node_modules將被復制到容器中,從而導致下載錯誤的庫(例如,如果您在 Windows 機器上開發,則不會下載 Linux 庫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM