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

标签 docker ember.js docker-compose dockerfile

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

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

node_modules appears empty, you may need to run 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"
  }
}

最佳答案

好的,经过大量实验,我能够基于 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

关于docker - 无法启动运行 ember.js 镜像的 docker 容器,node_modules 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52186488/

相关文章:

docker - 使用Docker的Kubernetes无法从默认端口80更改

docker - 将空字符串(双引号)参数传递给dockerfile

sql-server - 使用 NFS 挂载作为卷映射的 SQL Server docker 容器

ember.js - 如何在 ember.js ArrayController 中动态修改 sortProperties 值

python - 无法使用 docker-compose up 运行服务器

caching - 无法连接到 redis ://localhost:6379/0: Error 99 connecting to localhost:6379. 无法分配请求的地址

Docker exec命令不使用/的挂载目录

ember.js - 一次迭代两个数组而不破坏绑定(bind)

ember.js - 找不到有关将 ember-cli 应用程序迁移到 TypeScript 的模块

docker-compose 运行不是最后一个图像