【问题标题】:How to use sqlite3 with docker compose如何在 docker compose 中使用 sqlite3
【发布时间】:2019-01-17 00:54:41
【问题描述】:

以下教程之间;

我已经能够将我的 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. Sqlite3 可以和 Docker 一起使用吗
  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"]

非常感谢。

【问题讨论】:

  • 能否请您发布您当前Dockerfiledocker-compose.yml 的内容

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


【解决方案1】:

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

我更新了 Dockerfiles 和 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2021-10-25
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2018-05-19
    • 2019-10-30
    相关资源
    最近更新 更多