[英]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.