docker杂记

Dockerfile:
以下是一个精简的例子
FROM ubuntu:16.04 RUN apt-get update && apt-get upgrade -y \ && apt-get install -y python python-pip ENTRYPOINT ["python"] CMD ["entry.py"] EXPOSE 5000 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . /app
原则:
- 把不轻易变化的指令放在前面,能有效减少再次build时间
- ENTRYPOINT采用exec form的,避免使用shell form("/bin/sh -c"),有助于terminal signal的正确处理
- 显示expose port,为了可读性
- 使用非root 用户
- 在run安装完software之后删除不必要的文件
docker compose:
docker-compose.yml
---
version: '3'
services:
kiosk-example:
image: kiosk-example
build: ./kiosk
ports:
- "5000:5000"
environment:
REDIS_HOST: lcredis
recorder-example:
image: recorder-example
build: ./recorder
environment:
REDIS_HOST: lcredis
MYSQL_HOST: lmysql
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: mysqlpass
lcredis:
image: redis
ports:
- "6379"
lmysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mysqlpass
volumes:
- mysql-vol:/var/lib/mysql
ports:
- "3306"
volumes:
mysql-vol:

浙公网安备 33010602011771号