如何在Docker Compose中使用sqlite3 [英] How to use sqlite3 with docker compose
问题描述
在以下教程之间;
- Dockerizing create-react-app
- Developing microservices - Node, react & docker
我已经能够将自己的nodejs应用程序转换为dockerized微服务,该服务已启动并正在运行并连接至服务。但是,我的应用程序使用Sqlite / Sequelize,并且在进行dockerizing之前运行良好。
I have been able to convert my nodejs app to dockerized micro-services which is up and running and connecting to services. However, my app uses Sqlite/Sequelize and this was working perfectly prior to dockerizing.
使用新设置,我会出错;
With the new setup, I get error;
/usr/src/app/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js:31
throw new Error('Please install sqlite3 package manually');
Error: Please install sqlite3 package manually at new ConnectionManager
(/usr/src/app/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js:31:15)
我的问题是;
- 是否可以将Sqlite3与Docker一起使用
- 如果这样,任何人都可以共享适用于此的示例docker-compose.yml和Dockerfile组合。
我的docker-compose.yml
My docker-compose.yml
version: '3.5'
services:
user-service:
container_name: user-service
build: ./services/user/
volumes:
- './services/user:/usr/src/app'
- './services/user/package.json:/usr/src/package.json'
ports:
- '9000:9000' # expose ports - HOST:CONTAINER
web-service:
container_name: web-service
build:
context: ./services/web
dockerfile: Dockerfile
volumes:
- './services/web:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000' # expose ports - HOST:CONTAINER
environment:
- NODE_ENV=development
depends_on:
- user-service
我的用户/ Dockerfile
My user/ Dockerfile
FROM node:latest
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
ADD package.json /usr/src/package.json
RUN npm install
# start app
CMD ["npm", "start"]
我的网站/ Dockerfile
My web/ Dockerfile
FROM node:latest
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install react-scripts@1.1.4
RUN npm install gulp -g
# start app
CMD ["npm", "start"]
非常感谢。
推荐答案
知道了。问题是我的本地node_modules被复制到主机容器。因此,在sqlite3 lib / binding中,存在node-v57-darwin-x64而不是预期的-node-v57-linux-x64。
Got it. The issue was that my local node_modules were being copied to the host container. Hence in the sqlite3 lib/binding, node-v57-darwin-x64 was there instead of what is expected - node-v57-linux-x64. Hence the mess.
我如下更新了Dockerfiles和docker-compose.yml:
I updated the Dockerfiles and docker-compose.yml as follows:
我的docker-compose.yml
My docker-compose.yml
services:
user-service:
container_name: user-service
build:
context: ./services/user/
dockerfile: Dockerfile
volumes:
- './services/user:/usr/src/app'
- '/usr/src/node_modules'
ports:
- '9000:9000' # expose ports - HOST:CONTAINER
web-service:
container_name: web-service
build:
context: ./services/web/
dockerfile: Dockerfile
volumes:
- './services/web:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000' # expose ports - HOST:CONTAINER
environment:
- NODE_ENV=development
depends_on:
- user-service
我的用户/ Dockerfile
My user/ Dockerfile
FROM node:latest
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/node_modules/.bin` to $PATH
ENV PATH /usr/src/node_modules/.bin:$PATH
# install and cache app dependencies
ADD package.json /usr/src/package.json
RUN npm install
# start app
CMD ["npm", "start"]
有用的帖子
< a href = http://dchua.com/2016/02/07/getting-npm-packages-to-be-installed-with-docker-compose/ rel = nofollow noreferrer>获取要安装的npm软件包与docker-compose
这篇关于如何在Docker Compose中使用sqlite3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!