【问题标题】:unable to start a docker container running ember.js image, node_modules empty无法启动运行 ember.js 映像的 docker 容器,node_modules 为空
【发布时间】:2018-09-06 02:46:45
【问题描述】:

我正在尝试让 ember.js 在基于图像 danlynn/ember-cli 图像的 docker 容器中运行

尝试了不同版本的 Dockerfile 和 docker compose.yml,但我总是以 docker-compose up 命令结束,并抱怨以下内容:

node_modules 显示为空,您可能需要运行npm install

图像和容器已创建,但容器不会启动。

我是 docker 世界的新手,所以任何帮助都将不胜感激!

我猜我需要运行 npm install 才能让错误消失,但我将它添加到 Dockerfile 以便它可以在构建映像时运行,但这似乎没有帮助。

这是我的 Dockerfile 内容:

FROM danlynn/ember-cli
WORKDIR /code
COPY package.json /code
COPY bower.json /code
RUN ember init
RUN ember init --yarn
RUN bower --allow-root install
RUN npm install
COPY . /code
CMD ["ember", "serve"]

还有 docker-compose.yml 文件:

version: "3"
services:
  ember_gui:
    build: .
    container_name: ember_dev
    volumes:
      - .:/code
    ports:
       - "4200:4200"
       - "7020:7020"
       - "5779:5779"

最后,这里是 package.json 以防万一

{
  "name": "EmberUI",
  "version": "0.0.1",
  "description": "Test app GUI",
  "main": "index.js",
  "author": "Testing",
  "license": "MIT",
  "dependencies": {
    "chai": "^4.1.2",
    "mocha": "^5.2.0"
  }
}

【问题讨论】:

    标签: docker ember.js docker-compose dockerfile


    【解决方案1】:

    好的,经过大量实验,我能够基于 danlynn/ember-cli 映像在 docker 中运行 ember 实例

    经验教训:

    1.- 图像显然设置为在容器的“myApp”目录中运行。我试图定义一个“代码”目录来放置所有文件,但显然它真的不喜欢那样。

    2.- 安装镜像后需要在服务上运行 ember init 进行初始化。不知道为什么将命令放在 Dockerfile 中不起作用,但您只需在使用 docker-compose up 启动容器之前运行以下命令:

    docker-compose run --rm ember_gui ember init
    

    其中 ember_gui 是 docker-compose.yml 文件中 ember 服务的名称。

    3.- ember 初始化会创建很多文件和子目录,所以为了清楚起见,请确保在没有其他内容的目录中运行它。

    无论如何,这是我的 docker-compose.yml 的内容,以防它对其他人有用(请注意,我不再使用单独的 Dockerfile,而是直接使用图像):

    version: "3"
    
    services:
      ember_gui:
        image: danlynn/ember-cli
        container_name: ember_dev
        volumes:
          - .:/myapp
        command: ember server
        ports:
          - "4200:4200"
          - "7020:7020"
          - "7357:7357"
    

    第一次运行:

    docker-compose run --rm ember_gui ember init
    docker-compose up
    

    之后,你就可以运行了

    docker-compose up
    

    【讨论】:

    • 感谢您编写解决方案 :)
    猜你喜欢
    • 2017-04-16
    • 2018-03-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多