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

 原则:

  1. 把不轻易变化的指令放在前面,能有效减少再次build时间
  2. ENTRYPOINT采用exec form的,避免使用shell form("/bin/sh -c"),有助于terminal signal的正确处理
  3. 显示expose port,为了可读性
  4. 使用非root 用户
  5. 在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: 

  

posted @ 2020-09-24 19:03  jinlongwukong  阅读(103)  评论(0)    收藏  举报