簡體   English   中英

配置Docker服務以構建多個映像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM