无法启动运行ember.js映像的Docker容器,node_modules为空

时间:2018-09-05 13:34:44

标签: docker ember.js docker-compose dockerfile

我正在尝试使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"
  }
}

1 个答案:

答案 0 :(得分:2)

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

经验教训:

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

2.-安装映像后,需要通过在服务上运行ember init来对其进行初始化。不确定为什么将命令放入Dockerfile中不起作用,但是在使用docker-compose来启动容器之前,您只需要运行以下命令:

docker-compose run --rm ember_gui ember init

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

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

无论如何,这是我的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