簡體   English   中英

使用 mongo 卷構建 docker-compose 后無法重建服務

[英]Cannot rebuild a service after docker-compose with mongo volume is built

我有一個像這樣的 docker-compose 文件:

version: "3.4"

services:
  mongo:
    image: mongo
    restart: always
    container_name: us_mongodb
    environment:
     ...
    volumes:
      - ./mongo-dev-volume:/data/db


  mongo-express:
  ...


  example-app:
    build:
      context: ../../
      dockerfile: "./example-app/Dockerfile"
      args:
        - PORT=4200
    container_name: us_example-app_builder_and_server
    ports:
      - 4200:4200 

volumes:
  mongo-dev-volume:

(示例應用 dockerfile 只是一個簡單的靜態文件服務器,它將文件復制到自身。)

如果我運行docker-compose up一切都很好。

我想重建上述示例應用程序,所以我運行以下命令:

docker-compose up -d --force-recreate --no-deps --build example-app

為此,我收到以下錯誤消息:

forest@forest:~/xxxxxx/xxxxxx/Docker/prod-nginx$ docker-compose up -d --force-recreate --no-deps --build example-app
Building example-app
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
...
  [Previous line repeated 1 more time]
  File "site-packages/docker/utils/build.py", line 184, in rec_walk
PermissionError: [Errno 13] Permission denied: '/xxxxxx/xxxxxx/Docker/prod-nginx/mongo-dev-volume/journal'

這里有什么問題?

我已經發現/嘗試過的事情: 1.) 所述服務mongodb 卷無關 但是如果我刪除了所說的 mongo-dev-volume,那么命令就可以運行了。 之后,如果單個docker-compose up創建了所述文件夾,問題仍然出現。 但這不是在每次重新啟動時刪除數據庫的解決方案......

2.) 我仍然可以毫無問題地執行docker-compose downdocker-compose up (但正如我所說,我需要重建上述示例應用程序......)

3.) 我嘗試添加 .dockerignore ,如在其他一些線程中看到的:

#.dockerignore
**/mongo-dev-volume

但它似乎沒有任何影響。 (它就在 docker-compose.yml 旁邊)

4.) 我懷疑某些事情與權限有關。 但我不創建卷(只綁定名稱),由 docker 創建:

forest@forest:~/xxxxxx/xxxxxx/Docker/prod-nginx$ ls -lsh
total 32K

4,0K -rw-rw-r-- 1 forest forest 3,8K dec    5 10:31 docker-compose.yml
4,0K drwxrwxr-x 2 forest forest 4,0K júl    1 12:25 example-app
4,0K drwxrwxr-x 4    999 root   4,0K dec    5 13:12 mongo-dev-volume

我的一種解決方法是刪除卷綁定,並讓 Docker 在工作目錄之外創建一個單獨的(單獨處理的)卷。

而不是這個

  ./mongo-dev-volume:/data/db

我輸入了這個:

  mongo-dev-volume:/data/db

這樣,我仍然可以訪問該文件,據我所知,最好讓 OS 和 Docker 處理此問題,而不是在項目中創建 filesys 鏈接。

暫無
暫無

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

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