簡體   English   中英

docker-compose在docker-compose.yml中具有多個服務的構建

[英]docker-compose build with multiple services in docker-compose.yml

我是docker-compose的新手,我使用flask和redis構建了一個簡單的Web應用程序,並且在我的本地主機上運行良好,我的問題是如何將包含python和redis圖像的該Web應用程序推送到docker hub並從中提取該圖像不同的機器。

我通常會做docker-compose build,docker push

version: '3'
services:
 web:
  build: .
  image: "alhaffar/flask_redis_app:2.0"
  ports:
   - "8088:5000"
  depends_on:
   - redis
 redis:
  image: "redis:alpine"

Dockerfile

FROM python:3.7

# CHANGE WORKIN DIR AND COPY FILES
WORKDIR /code
COPY . /code

# INSTALL REQUIRED PACAKGES
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# RUN THE APP
CMD ["python", "./main.py"]

當我嘗試將映像拉入另一台計算機並發出docker run時,它僅運行python映像而沒有redis映像。

我如何運行所有圖像

Dockerhub和其他Docker注冊表使用映像。 Docker-compose只是一個抽象,它通過使用一個配置文件docker-compose來幫助建立一堆可以協同工作的映像。 沒有像docker-compose注冊表那樣的東西。 然后,如果您在另一台機器上有docker-compose文件,則只需使用docker-compose up並應將圖像拉出-假設它們已發布到某個注冊表(公共/私有)。 如果您使用的是Redis官方映像,則應用程序的映像應由您發布,並且refs將通過dockerhub注冊表獲取。

當您進行一些本地開發並希望快速設置工作環境時,Docker-compose會很有幫助。 如果要在其他計算機上設置此環境,則必須與它們共享docker-compose文件,並在該另一台計算機上安裝docker和docker-compose。

如果您的docker-compose配置為在啟動時構建一些映像,您仍然可以使用docker-compose push命令推送此映像。

使用Docker Compose腳本,您可以做兩件事:

  1. 構建您的Flask應用程序->圖片1
  2. 拉並運行Redis —>圖2

如果將映像1推入DockerHub並將其拉到另一台機器上,則會丟失第二個映像。

您想要做的是在沒有build行的第二台機器上運行Docker compose腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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