【问题标题】:How can I work with NodeJS and Docker Compose with volumes?如何将 NodeJS 和 Docker Compose 与卷一起使用?
【发布时间】:2018-01-04 23:15:21
【问题描述】:

我正在尝试使用 docker-compose 和volumes 使其在nodejs 中工作,我想编辑我的代码,这就是我应该使用volumes 的原因。

当我不将卷放在 docker-compose.yml 文件中时,它可以工作!。但是卷没有工作。

有什么想法吗?

这是我的 docker-compose.yml:

version: "3.2"
services:
 node:
   container_name: node_app
     build:
      context: ./
      dockerfile: dockerfiles/Dockerfile
     user: "node"
     environment:
       - NODE_ENV=production
     volumes:
       - .:/home/app
     ports:
       - "3000:3000"

这是我的 Dockerfile:

FROM node:carbon-stretch
WORKDIR /home/app
COPY package*.json ./
RUN npm i express -S
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

这是我的 package.json:

{
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last <test@gmail.com>",
  "main": "server.js",
  "scripts": {
     "start": "node server.js"
   }
 }

这是我的 server.js:

'use strict'
 const express = require('express')

 // Constants
 const PORT = 3000
 const HOST = '0.0.0.0'

 // App
 const app = express()
 app.get('/', (req, res) => {
   res.send('Hello world\n')
 });

 app.listen(PORT, HOST)
 console.log(`Running on http://${HOST}:${PORT}`)

谢谢!

【问题讨论】:

    标签: node.js express docker docker-compose dockerfile


    【解决方案1】:

    问题是当您将文件夹. 挂载到/home/app 上时,/home/app 中的所有内容都会被主机上. 的内容所掩盖。这有效地去除了RUN npm i express -S引入的东西

    要解决此问题,您需要将要编辑的代码隔离到单独的文件夹中(如果不是这样的话)

    volumes:
      - ./code:/home/app/code
    

    【讨论】:

    • 我明白这个问题,但我需要卷内的package.json才能编辑它,还有其他解决方案吗?
    【解决方案2】:

    尝试将你的 docker-compose 文件解析为有效的 yaml 格式,你可以再试一次:

    version: "3.2"
    services:
     node:
         container_name: node_app
         build:
          context: ./
          dockerfile: dockerfiles/Dockerfile
         user: "node"
         environment:
           - NODE_ENV=production
         volumes:
           - .:/home/app
         ports:
           - "3000:3000"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多