[英]Configure Docker services to build multiple images
我正在試驗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
並將它們組合到根目錄中的單個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
上的節點服務器無法正常工作,並且在運行docker-compose up
出現以下錯誤:
錯誤:找不到模塊“ /usr/src/app/release/index.js”
完整的端子輸出可在此處找到
如果我正確理解這是因為docker無法找到運行服務器的index.js
文件。
所以我的問題是我該如何設置它,以便當我運行docker-compose up
它可以構建兩個映像? 還是我這樣做完全錯誤?
我應該注意,我正在Windows 10上使用最新版本的Docker和Node v8.11.1
您可以更改Dockerfile
docker-compose
文件以使用每個文件夾中的Dockerfile
進行構建:
version: '3.1'
services:
app:
build:
context: ./mgt-dash
ports:
- 3000:3000
node:
build:
context: ./server
ports:
- 4000:4000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.