背景:最近在自學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 - 從入門到實踐》