如何将sqlite3与docker compose结合使用

时间:2018-08-09 14:00:19

标签: node.js docker sqlite docker-compose sequelize.js

在以下教程之间;

我已经能够将我的nodejs应用程序转换为已启动并正在运行并连接到服务的dockerized微服务。但是,我的应用程序使用Sqlite / Sequelize,并且在进行dockerizing之前运行良好。

使用新设置后,我得到了错误;

/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)

我的问题是;

  1. 是否可以在Docker中使用Sqlite3
  2. 如果是这样,请能够共享适用于此功能的示例docker-compose.yml和Dockerfile组合的任何人。

我的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

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

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"]

非常感谢。

1 个答案:

答案 0 :(得分:1)

知道了。问题是我的本地node_modules被复制到主机容器。因此,在sqlite3 lib / binding中,存在node-v57-darwin-x64而不是预期的-node-v57-linux-x64。因此一团糟。

我更新了Dockerfile和docker-compose.yml如下:

我的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

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"]

有用的帖子 Getting npm packages to be installed with docker-compose