背景:最近在自学docker容器知识,在跟着《Docker - 从入门到实践》进行 docker-compose 搭建django/postgreSQL 实例。在搭建过程中由于自己操作失误以及理解不到位导致在出现错误的时加大了排错难度。为了防止以后忘记因此记录在此。

如下直接贴出docker-compose项目环境:

# uname -r
3.10.-.el7.x86_64
# cat /etc/redhat-release
CentOS Linux release 7.6. (Core)

项目目录结构:

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

django:原本django服务容器需挂载的路径

postgresql:原本 postgresql服务容器需挂载的路径

Dockerfile:构建 django 镜像的文件

requirements:django服务容器需安装的python扩展包

Dockerfile文件内容如下:

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

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:

一直到这一步都很顺利,哼哼,然后开始跟着教材执行 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 - 从入门到实践》

docker-compose volumes指令路径映射问题的更多相关文章

  1. Docker Compose搭建ELK

    Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...

  2. Docker Compose 配置文件常用指令

    Docker Compose 配置文件常用指令 YAML文件格式及编写注意事项 YAML是一种标记语言很直观的数据序列化格式,可读性高.类似于XML数据描述语言,语法比XML简单的很多. YAML数据 ...

  3. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

  4. Docker学习笔记 - Docker Compose 脚本命令

    Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...

  5. Docker 系列五(Docker Compose 项目).

    一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器 ...

  6. 构建Docker Compose服务堆栈

    1.安装了docker-compose,现在我们要使用docker-compose来运行容器栈.这个地方会有两个容器,一个容器中使用Flask搭建的简单应用,另一个容器是Redis,Flash会向re ...

  7. Docker三剑客之Docker Compose

    一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...

  8. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  9. docker——三剑客之Docker Compose

    编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compo ...

随机推荐

  1. 在 UIViewController 中手动增加 TableView 出现 Type 'SomeViewController' does not confirm to protocol 'UITableViewDataSource' 问题的解决办法

    许多时候我们都有在普通的继承自 UIViewController 的控制器中使用 TableView 的需求,这时候就需要当前控制器类继承 UITableViewDelegate 和 UITableV ...

  2. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  3. 牛客练习赛42B(异或的性质)

    传送门 b^ c >= b - c,这个结论应该记住,我还在这里证过…… 这个题就用到了这个结论,假如当前答案集合为S,和为a,异或和为b,当前答案为a+b了.这时又读入个c,该不该加进来?a ...

  4. Java中try catch finally语句中含有return语句的执行情况

    finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面 ...

  5. 在SpringBoot中用SpringAOP实现日志记录功能

    背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl( ...

  6. 牛客网Java刷题知识点之线程的几种可用状态(新建、可运行、运行、阻塞、死亡)

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=13 ...

  7. BeanUtils 工具类

    一.BeanUtils 概述     BeanUtils 是阿帕奇提供的一套专门用于将一些数据封装到java对象中的工具类;          名词:javaBean:特定格式的java类称为java ...

  8. IOS与android

    Android和iOS那个好?应该先往哪个上面投入资源?多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本.就索性进行了一番调研,于是有了本文(本次不讨论越狱的iOS) 首先从情感上,你喜欢 ...

  9. windows命令行快速启动软件

    windows桌面上太多的应用程序快捷方式很影响美观,于是寻思使用类似Linux系统中命令行的方式来启动软件. 只需要3步: 1.建立一个目录A,用来存放快捷方式.比如,建立D:\path.并复制快捷 ...

  10. 如何通过Xcode 5中集成的XCTest框架进行简单的单元测试

    XCTest 1.第一个单元测试 XCTest是Xcode 5中自带的测试框架 下面从一个Demo开始.首先用Xcode新建一个工程UnitTestDemo,工程目录结构如下: 可以看到工程下面多了一 ...