![](/img/trans.png)
[英]How to deploy multiple MEAN app containers to Azure using Docker-Compose
[英]Run multiple Docker containers at once using docker-compose
目前我已經創建了一個Dockerfile
和一個Dockerfile
docker-compose.yml
來使用docker-compose up
運行我的 rest-api 和數據庫。
我現在想做的是添加另一個容器,即 web 應用程序(使用 React 構建)。 我對如何做到這一點有點困惑,因為我兩天前才開始學習 Docker。
這是我當前的文件夾結構
最后,我希望能夠運行docker-compose up
來啟動rest-api
和web-app
。
我是否需要在每個文件夾中創建一個單獨的Dockerfile
並創建一個“全局” docker-compose.yml
來將所有內容鏈接在一起?
新文件夾結構:
文件
FROM node:13.10
# The destination of the app in the container
WORKDIR /usr/src/app
# Moves the package.json, package-loc.json and tsconfig.json to the specified workdir
COPY package*.json ./
COPY tsconfig.json ./
# Create user and postgres
ENV POSTGRES_USER root
ENV POSTGRES_PASSWORD 12345
ENV POSTGRES_DB postgres
ENV POSTGRES_URI 'postgres://postgres:12345@postgres:5432/postgres'
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
docker-compose.yml
version: '3'
services:
node:
container_name: rest-api
restart: always
build: .
environment:
PORT: 3000
ports:
- '80:3000'
links:
- postgres
postgres:
container_name: postgres-database
image: postgres
environment:
POSTGRES_URI: 'postgres://postgres:12345@postgres-database:5432/postgres'
POSTGRES_PASSWORD: 12345
ports:
- '5432:5432'
好的 - 所以有很多方法可以解決這個問題,它或多或少取決於您的喜好。
如果你想使用你建議的文件夾結構(這很好),你可以這樣做:
在每個應用程序的根目錄中有一個Dockerfile
,它將構建特定的應用程序(正如您已經建議的那樣)將您docker-compose.yml
文件放在兩個應用程序的父文件夾中(正如您已經提出的那樣),然后只需制作一些更改您的 docker-compose.yml (我只留下了必要的部分。注意不再需要鏈接 - 內部網絡會將服務名稱解析為相應的服務 IP 地址)
version: '3'
services:
node:
build:
context: rest-api
environment:
PORT: 3000
ports:
- '3000:3000'
web:
image: web-app
build:
context: web-app
ports:
- 80:80
postgres:
image: postgres
environment:
POSTGRES_URI: 'postgres://postgres:12345@postgres-database:5432/postgres'
POSTGRES_PASSWORD: 12345
ports:
- '5432:5432'
因此, context
告訴 docker 您正在構建的內容實際上位於不同的目錄中,並且在 Dockerfile 中執行的所有命令都將與該文件夾相關
我還更改了端口映射,因為您可能希望通過 HTTP 端口訪問您的 Web 應用程序。 請注意,只要節點服務綁定到 0.0.0.0:3000(不是 127.0.0.1:3000),web-app 就能夠使用node
主機名與 rest-api 容器通信
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.