STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

docker-compose的学习使用

docker-compose的学习使用

安装 docker-compose

pip install docker-compose

使用 docker-compose

  • version:指定 docker-compose.yml 文件的写法格式
  • services:多个容器集合
  • image:指定服务所使用的镜像
      image: python:3.6
    
  • build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
      build: ./dir
      build:
          context: ./dir
          dockerfile: Dockerfile
          args:
              buildno: 1
    
  • command:覆盖容器启动后默认执行的命令
    command:python manage.py runserver 0.0.0.0:8080
    command:[python, manage.py, runserver, 0.0.0.0:8080]
    
  • dns:配置 dns 服务器,可以是一个值或列表 ``` dns: 8.8.8.8 dns:
    • 8.8.8.8
    • 9.9.9.9 ```
  • dns_search:配置 DNS 搜索域,可以是一个值或列表 ``` dns_search: example.com dns_search:
    • dc1.example.com
    • dc2.example.com ```
  • environment:环境变量配置,可以用数组或字典两种方式
      environment:
          RACK_ENV: development
          SHOW: 'ture'
      environment:
          - RACK_ENV=development
          - SHOW=ture
    
  • env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量
      env_file: .env
      env_file:
          - ./common.env
    
  • expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机 ``` expose:
    • “3000”
    • “8000” ```
  • network_mode:设置网络模式
      network_mode: "bridge"
      network_mode: "host"
      network_mode: "none"
      network_mode: "service:[service name]"
      network_mode: "container:[container name/id]"
    
  • ports:对外暴露的端口定义,和 expose 对应 ``` ports: # 暴露端口信息 - “宿主机端口:容器暴露端口”
    • “8763:8763”
    • “8763:8763” ```
  • volumes:卷挂载路径 ``` volumes:
    • /lib
    • /var ```
  • links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况 ``` links: # 指定服务名称:别名
    • docker-compose-server:compose-test ```
  • logs:日志输出信息
      --no-color          单色输出,不显示其他颜.
      -f, --follow        跟踪日志输出,就是可以实时查看日志
      -t, --timestamps    显示时间戳
      --tail              从日志的结尾显示,--tail=200
    

    举例

    以Django程序为例:

首先编写Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

编写docker-compose:

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

常用命令

  • 列出所有运行容器
    docker-compose ps
    
  • 查看服务日志输出
    docker-compose logs
    
  • 打印绑定的公共端口,下面命令可以输出 test 服务 8080 端口所绑定的公共端口
    docker-compose port test 8080
    
  • 构建或者重新构建服务
    docker-compose build
    
  • 启动指定服务已存在的容器
    docker-compose start eureka
    
  • 停止已运行的服务的容器
    docker-compose stop test
    
  • 删除指定服务的容器
    docker-compose rm test
    
  • 构建、启动容器
    docker-compose up
    
  • 通过发送 SIGKILL 信号来停止指定服务的容器
    docker-compose kill test
    
最近的文章

python的函数参数传递机制

函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。 引用传递(pass-by-reference)过程中,被调函数的形式...…

水滴石穿继续阅读
更早的文章

docker-file的学习使用

docker-file的学习使用…

水滴石穿继续阅读