容器化应用的DevOps与Kubernetes入门
一、Dockerfile的组织
1.1 初始Dockerfile
假设我们有一个由应用代码、数据库和缓存组成的应用栈,初始的Dockerfile可能如下:
FROM ubuntu
ADD . /proj
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y redis-server python python-pip mysql-server
ADD /proj/db/my.cnf /etc/mysql/my.cnf
ADD /proj/db/redis.conf /etc/redis/redis.conf
ADD https://example.com/otherteam/dep.tgz /tmp/
RUN -zxf /tmp/dep.tgz -C /usr/src
RUN pip install -r /proj/app/requirements.txt
RUN cd /proj/app ; python setup.py
CMD /proj/start-all-service.sh
1.2 优化建议
- 单一职责原则 :确保一个容器只做一件事,移除不必要的包,如初始Dockerfile中的mysql和redis的安装与配置。
- 过滤无关文件 :使用
.dockerignore过
超级会员免费看
订阅专栏 解锁全文
45

被折叠的 条评论
为什么被折叠?



