簡體   English   中英

如何使用別人的docker-compose?

[英]How to use docker-compose from another person?

我對 Docker 的世界還很陌生,所以我有以下場景:

  • Spring 引導應用程序依賴於..
  • PostgreSQL

和前端向他們請求數據。

Spring Boot app中的Dockerfile為:

EXPOSE 8080
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

而docker-compose.yaml的內容是:

version: '3'

services:
  app:
    image: <user>/<repo>
    build: .
    ports:
      - "8080:8080"
    container_name: app_test
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/test
      - SPRING_DATASOURCE_USERNAME=test
      - SPRING_DATASOURCE_PASSWORD=test

  db:
    image: 'postgres:13.1-alpine'
    restart: always
    expose:
      - 5432
    ports:
      - "5433:5432"
    container_name: db_test
    environment:
      - POSTGRES_DB=test
      - POSTGRES_USER=test
      - POSTGRES_PASSWORD=test
    volumes:
      - db:/var/lib/postgresql/data
      - ./create-tables.sql:/docker-entrypoint-initdb.d/create-tables.sql
      - ./fill_tables.sql:/docker-entrypoint-initdb.d/fill_tables.sql
volumes:
    db:
      driver: local

據我所知,為了運行整個程序,只需鍵入docker-compose可以了,瞧,它可以工作。 它從 docker-hub 存儲庫中提取應用程序的圖像,對數據庫的圖像也是如此。

事情來了。 我正在和另一個人(前端)一起工作,他的目標是向這個 API 發出請求。所以他只復制粘貼這個 docker-compose.yaml 文件並寫上 docker-compose 就足夠了嗎?或者還有另一件事要做?

docker-compose在團隊合作中應該如何使用?

在此先感謝,如果我必須更清楚地發表評論!

由於build: . api服務中輸入 docker-compose 關鍵字,運行docker-compose up將搜索后端 Dockerfile 並構建鏡像。 所以,你的隊友需要得到你寫的所有文件。
另一種解決方案,在我看來更好,是由您構建映像並將其推送到 docker.hub,這樣您的隊友就可以從那里拉取映像並在他/她的系統上運行。 對於此解決方案,可能很有用。
如果您不熟悉 docker 集線器,請閱讀此快速入門

您的同事將需要:

  • docker-compose.yml文件本身
  • volumes:綁定掛載
  • build: (or build: { context: } ) 行中命名的任何目錄,如果圖像沒有被推送到注冊表
  • 未自動重新創建的命名卷中包含的任何數據內容

如果他們有docker-compose.yml文件,他們可以docker-compose pull那里命名的圖像,Docker 不會嘗試重建它們。

命名卷很難在系統之間傳輸; 請參閱有關保存和恢復卷的 Docker 文檔 綁定掛載的主機目錄更容易傳輸,但在非 Linux 主機上要慢得多。 避免對部分應用程序代碼使用卷,包括 Node 庫目錄或 static 資產。

特別是對於此設置,我可能考慮進行的一項更改是使用postgres圖像的環境變量來創建數據庫,然后使用應用程序的數據庫遷移系統來創建表和種子數據。 這將避免需要兩個.sql文件。 除此之外,他們唯一需要的是docker-compose.yml文件。

暫無
暫無

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

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