docker-compose volumes指令路徑映射問題

背景:最近在自學docker容器知識,在跟着《Docker - 從入門到實踐》進行 docker-compose 搭建django/postgreSQL 實例。在搭建過程當中因爲本身操做失誤以及理解不到位致使在出現錯誤的時加大了排錯難度。爲了防止之後忘記所以記錄在此。python

以下直接貼出docker-compose項目環境:web

# uname -r
3.10.0-957.el7.x86_64
# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

項目目錄結構:sql

compose_django_postgresql: docker-compose.yml 文件存放路徑docker

django:本來django服務容器需掛載的路徑django

postgresql:本來 postgresql服務容器需掛載的路徑服務器

Dockerfile:構建 django 鏡像的文件wordpress

requirements:django服務容器需安裝的python擴展包post

 

Dockerfile文件內容以下:測試

FROM python:2.7
ENV PYTHONUNBFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

docker-compose.yml文件內容以下:ui

postgresql:
  image: postgres

django:
  build: ./django
  volumes:
    - django:/code
  ports:
    - "8000:8000"
  links:
    - postgresql
  command: python manage.py runserver 0.0.0.0:8000

一直到這一步都很順利,哼哼,而後開始跟着教材執行 docker-compose 命令

[root@TestDocker compose_django_postgresql]# docker-compose run django django-admin.py startproject mytest_dockerdjango 
Pulling postgresql (postgres:)...
latest: Pulling from library/postgres
...........
........... Removing intermediate container 840872e8a932 Successfully built 1dd4f62b514e Successfully tagged compose_django_postgresql_django:latest WARNING: Image
for service django was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.

啓動無報錯~~~

因爲以前測試 docker-compose up 啓動項目以後在 web 上訪問出現 ip 容許問題

我就想這既然把django目錄掛載到了服務容器到 /code 目錄,那我直接去django目錄下修改是不是同樣的,因而乎。。。。

what~~~, 剛建立的django項目目錄呢?爲了解決這個疑問查詢了資料也沒搞清楚問題在哪兒(原諒初學小白,哈哈!),我還在服務器上使用 docker-compose 創建了一個 wordpress項目,徹底無問題~~~,後來在一次從新運行 docker-compose run django 中出現了以下錯誤:

# docker-compose run django django-admin startproject mytest_dockerdjango 
Starting compose_django_postgresql_postgresql_1 ... done
CommandError: '/code/mytest_dockerdjango' already exists

我注意到了‘'/code/mytest_dockerdjango' already exists’,所以我想我在 docker-compose.yml volumes指定可能有問題, django目錄可能不是相對於我所在當前目錄,使用find命令搜索以後證明了這一點

因而我開始修改了 docker-compose.yml文件、停掉清理以前掛載的卷從新建立鏡像而且運行 docker-compose run django django-admin startproject XXX 

# cat docker-compose.yml

postgresql:
image: postgres

django:
build: ./django
volumes:
- ./django:/code
ports:
- "8000:8000"
links:
- postgresql
command: python manage.py runserver 0.0.0.0:8000


# docker-compose stop # docker-compose down --volumes # docker-compose build --no-cache # docker-compose run django django-admin startproject mytest_dockerdjango

而後再查看django目錄有django 項目文件了

 

參考文件:《Docker - 從入門到實踐》

相關文章
相關標籤/搜索