我试图让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"
}
}
好的,经过多次实验,我能够根据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