【发布时间】:2021-01-05 21:52:47
【问题描述】:
我尝试通过docker构建服务器和数据库
这是我的docker-compose.yml
version: '3'
services:
api-server:
build: ./api
links:
- 'db'
ports:
- '3000:3000'
volumes:
- ./api:/src
- ./src/node_modules
tty: true
container_name: api-server
db:
build:
context: .
dockerfile: ./db/Dockerfile
restart: always
hostname: db
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_USER: root
MYSQL_PASSWORD: test
MYSQL_DATABASE: db
volumes:
- './db:/config'
ports:
- 3306:3306
container_name: db
这是我的Dockerfile
FROM node:alpine
WORKDIR /src
COPY . .
RUN rm -rf /src/node_modules
RUN rm -rf /src/package-lock.json
RUN yarn install
CMD yarn start:dev
设置服务器后,我尝试访问。但出现以下错误
Error: Error loading shared library /src/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: Exec format error
我想知道问题出在哪里。 以及如何解决它。
如果有人有意见,请告诉我。
谢谢
【问题讨论】:
-
删除
docker-compose.yml文件中的volumes:有帮助吗?或者等效地,docker-compose down -v? -
这似乎是因为为您的机器(mac os?)构建的 bcrypt 无法在 docker 映像(linux)stackoverflow.com/a/20590261/2422826 上工作,我尝试了几种方法来尝试获取 docker编译它自己的 bcrypt,包括richardkotze.com/top-tips/…;但是,即使确保我有一个 .dockerignore 文件并确保所有内容都已删除,它也不起作用...我确实通过将
bcrypt替换为bcryptjs包然后运行 npm rebuild来使其工作。我希望看到解决此问题的更好步骤。 -
我和 auerbachb 在同一条船上,我已经尝试了一切,但无法让它工作
-
将
bcrypt替换为bcryptjs。它适用于 Mac M1
标签: javascript node.js docker docker-compose