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