我正在试验Docker,并且具有以下文件夹结构:
- mtg2
- docker-compose.yml (file)
- mgt-dash (contains angular-cli app)
- server (contains node/express server)
- release (contains index.js)
每个子文件夹都有其自己的Dockerfile
,而我试图弄清楚如何使用docker-compose.yml
文件声明2个服务,以便在我运行docker-compose up
时可以构建两个图像。
到目前为止,我的docker-compose.yml
文件包含以下内容:
version: '3.1'
services:
app:
image: 'mtg-dash'
build: '.'
ports:
- 3000:80
node:
image: 'node-server'
build: '.'
ports:
- 4000:80
Docker文档非常庞大,我不确定从哪里开始。
到目前为止,我已经尝试将两个docker文件从它们各自的文件夹中移出并将它们组合成根中的单个Dockerfile
,如下所示:
# For angular app
FROM nginx:alpine
COPY mgt-dash/nginx.conf /etc/nginx/nginx.conf
WORKDIR /usr/share/nginx/html
COPY mgt-dash/dist/mgt-dash .
# For node express server
FROM node:8
# Create app directory
WORKDIR /usr/src/app/release
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY server/package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 4000
CMD [ "npm", "start" ]
使用此配置,角度应用程序(有时)可以正常运行并且可以按预期在端口3000
上运行,但是端口4000
上的节点服务器不起作用,运行{{ 1}}:
错误:找不到模块'/usr/src/app/release/index.js'
完整的终端输出可以在here
中找到如果我正确理解这是因为docker无法找到运行服务器的docker-compose up
文件。
所以我的问题是如何设置它,以便在我运行index.js
时可以生成两个图像?还是我这样做完全错误?
我应该注意,我正在Windows 10上使用最新版本的Docker和节点docker-compose up
答案 0 :(得分:2)
您可以更改applicationHost.config
文件,以使用每个文件夹中的docker-compose
进行构建:
Dockerfile