搜索
登录
注册
×
欢迎来到小雕博客,玩的开心。
Docker实践08-使用docker-compose搭建Django+MySQL+Redis项目
博主:
alone
发布时间:
2020-08-27T01:30:03Z
147次浏览
0 条评论
## 1、准备工作 ```shell mkdir docker_compose cd docker_compose mkdir 01_django mkdir 02_mysql mkdir 03_redis ```  ## 2、构建django项目 注意:使用之前制作的Django镜像(2.0)版本 进入到01_django文件夹 1. 建立Dockerfile文件 新建Dockerfile文件,如下: ```shell FROM ubuntu:16.04 # 复制文件到容器 ADD requirements.txt /home # 跳转到指定目录 WORKDIR /home # 复制国内更新源 COPY sources.list /etc/apt/sources.list # 安装vim、python3、pip3以及Django用的包 RUN apt-get update && apt-get install vim -y \ && apt-get install python3 -y \ && apt-get install python3-pip -y \ && pip3 install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com # 创建项目(当在运行容器是,如果使用了-v且设置了/home/app,那么就可以直接运行指定的Django项目) RUN django-admin startproject app # 进入到项目目录 WORKDIR /home/app # 对外暴露端口 EXPOSE 8000 # 运行测试项目 CMD ["python3","manage.py","runserver", "0.0.0.0:8000"] ``` 2. 建立requirements.txt 新建`requirements.txt`文件,内容如下: ``` aliyun-python-sdk-core-v3==2.13.10 certifi==2019.9.11 chardet==3.0.4 Django==2.0 django-redis==4.10.0 idna==2.8 itsdangerous==1.1.0 Jinja2==2.10.3 jmespath==0.9.4 MarkupSafe==1.1.1 mock==3.0.5 Pillow==6.2.1 pycryptodomex==3.7.2 PyMySQL==0.9.3 python-alipay-sdk==1.10.1 pytz==2019.3 QQLoginTool==0.3.0 redis==3.3.11 requests==2.22.0 six==1.12.0 urllib3==1.25.7 ``` 3. 建立sources.list 新建`sources.list`文件,内容如下: ``` deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse ``` 4. 建立项目文件夹 新建立一个文件夹project,目的是以后将Django项目代码共享到此目录 ```shell mkdir project ``` 此时01_django文件中的效果如下:  5.新建django项目 在`/01_project/project`的目录下执行 ``` django-admin startproject app ``` 6. 构建docker-compose.yml文件 跳转到docker_compose路径下 新建docker-compose.yml文件,内容如下: ```shell version: '3' services: django: build: ./01_django volumes: - ./01_django/project/app:/home/app ports: - "8000:8000" ``` 效果如下: **注意**: 如果以后需要运行某个服务时,运行特殊命令,可以通过添加如下代码实现 ```shell command: python3 manage.py runserver 0.0.0.0:8000 ``` 6. 构建Django服务 执行命令 ```shell docker-compose build ```  构建成功  **说明**: 因为此时的docker-compose.yml文件中只有一个django的服务,所以只创建了这个镜像 使用`docker-compose up`运行服务  这个时候访问[http://127.0.0.1:8000](http://127.0.0.1:8000)就可以看到django的初始页面了。 ## 3、 构建MySQL服务 1. 备份 将之前的`docker-compose.yml`进行备份  2. 修改 然后修改`docker-compose.yml`内容如下: ```shell version: '3' services: mysql: image: mysql:5.7 expose: - 3306 ports: - "3307:3306" environment: MYSQL_ROOT_PASSWORD: python MYSQL_USER: root volumes: - ./02_mysql:/var/lib/mysql ``` 3. 启动docker-mysql ```shell docker-compose up ```  之后查看容器进行确认  进行链接数据库  4. 说明 我们之所以在docker-compose.yml文件中设置volumes是为了保证,将来操作的数据可以直接存储到宿主机,而不会因为容器的删除,导致数据丢失.  ## 4、构建redis服务 下载redis镜像,复制一份`docker-compose.yml`为`docker-compose.yml.bk2`,然后构建`docker-compose.yml`,之后`docker-compose.yml`文件为: ```shell version: '3' services: redis: image: redis expose: - 6379 ports: - "6399:6379" ```  链接redis数据库  ## 6、连通各个服务 1. 合并为一个docker-compose.yml文件 将之前的3个docker-compose.yml文件合并为一个,内容如下: ```shell version: '3' services: redis: image: redis expose: - 6379 ports: - "6399:6379" mysql: image: mysql:5.7 expose: - 3306 ports: - "3307:3306" environment: MYSQL_ROOT_PASSWORD: python MYSQL_USER: root volumes: - ./02_mysql:/var/lib/mysql django: build: ./01_django volumes: - ./01_django/project:/home/app ports: - "8000:8000" depends_on: - mysql - redis ``` 注意: depends_on表示依赖,如上述代码中意思是:需要运行django服务那么需要先运行redis、mysq服务,但并不能保证在django服务运行前它们已经成功的运行起来,只能保证它们先运行。 4.2 运行效果  使用docker ps查看  使用`docker-compose ps`查看 
き 赞赏
如果觉得我的文章对你有用,请随意赞赏
×
Close
赞赏作者
扫一扫支付
支付宝支付
微信支付
发表评论
发表评论
评论内容