背景:最近在自学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 - 从入门到实践》