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

问题描述 投票:0回答:1

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

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

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

将创建映像和容器,但容器将无法启动。

我是码头工人的新手,所以任何帮助都将不胜感激!

我猜我需要运行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个回答
2
投票

好的,经过多次实验,我能够根据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
© www.soinside.com 2019 - 2024. All rights reserved.