Docker Compose practice
2024-08-28 23:32:59
Docker Compose
什么是 Docker-Compose?
Compose 可以让用户在集群中部署分布式应用。简单的说,Docker Compose 属于一个“应用层”的服务,
用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。使用Docker-Compose的过程
首先,通过Dockerfile定义应用程序的环境,以便在任何地方方便重复使用;
然后,通过docker-compose.yml描述应用的各种服务,以便于它们能在一个独立的环境中联合运行;
最后,通过执行docker-compose up
便能执行整个应用。Docker-Compose 在Django项目中的应用
- 在Django项目的根目录下创建Dockerfile
FROM python:2.7
MAINTAINER Andy andy@xx.com
ENV PYTHONUNBUFFERED 1
RUN mkdir /tmscode
WORKDIR /tmscode
ADD requirements.txt /tmscode/
RUN pip install -r requirements.txt
ADD . /tmscode
- 创建requirement.txt
Django==1.9
fabric
MySQL-python
- 在项目根目录中创建docker-compose.yml
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=passwd
- MYSQL_USER=user
- MYSQL_PASSWORD=passwd
- MYSQL_DATABASE=testdb
web:
build: .
command: python manage.py runserver 0.0.0.0:8667
volumes:
- .:/tmscode
ports:
- "8667:8667"
links:
- db
- 修改setting
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'tmsApp',
'USER': 'tmsAdmin',
'PASSWORD': 'bhu890-=',
'HOST': 'db',
'PORT': '3306',
}
}
Notes: 如果没有设置HOST 和 PORT, 当应用容器连接数据库容器时候会连接到本地数据库,而出现类似“can not connect to local Mysql”错误
常见命令
- 查看镜像
docker images
- 查看运行容器并进入容器
docker ps
docker exec -it <container_name> bash
- 将镜像打包成 tar 包
docker save -o docker-tms-image.tar.gz tms_web
- 从一个tar 包中加载镜像
docker load -i docker-tms-image.tar.gz
常见问题
- error: docker error client's docker version don't match server's docker version while running docker-compose
(client and server don't have same version)
solution: remove the docker-compose, don't use "pip install -U docker-compose",
use :
curl -L http://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker- compose
chmod +x /usr/local/bin/docker-compose
- error: pip version is 1.5.4, but need 8.0.0, use pip install --upgrade pip doesn't work
solution: use get-pip.py
python get-pip.py
- 创建MySQL容器时,如有需要修改数据库的配置,例如修改字符集为utf8格式:
MYSQL_CHARACTER_SET: Character set for MYSQL_DATABASE.
MYSQL_COLLATE: Collate for MYSQL_DATABASE.
GRANT_HOSTNAME: Hostname used on GRANT for MYSQL_DATABASE
- error: docker error client's docker version don't match server's docker version while running docker-compose
参考
最新文章
- Burp Suite使用详解一
- JDBC的连接和操作
- 第21/24周 性能监控(PAL工具)
- 使用T-SQL进行活动目录查询
- iperf3实践
- 实战案例:DIV嵌套
- Linux网络统计工具/命令
- MyBatis学习总结_18_MyBatis与Hibernate区别
- android智能天气闹钟应用开发经过
- JavaScript进阶(三) 值传递和引用传递
- java文件上传--基于ajaxFileUpload+struts2
- myeclipse8.6安装svn插件
- 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
- 用CSS的border画三角形
- [Luogu 2062]分队问题
- Disruptor-架构思维的转变
- NEO智能合约开发(一)不可能完成的任务
- AJ的笔记之上拉电阻的工作原理分析
- LeetCode--No.012 Integer to Roman
- 提高Mxd地图渲染出图效率的方法