范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Docker从入门到精通之DockerCompose

  Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需一个命令,就可以从配置中创建并启动所有服务。 Install Docker Compose下载docker compose $  sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose给docker compose设置可执行权限 $ sudo chmod +x /usr/local/bin/docker-compose验证 $ docker-compose --versionUninstallation$ sudo rm /usr/local/bin/docker-composeGetting Started
  用python构建一个简易网页统计网页点击量,docker-compose进行发布
  Step1:创建项目 创建项目目录 $ mkdir   test_web
  $ cd   test_web 在项目目录中创建app.py文件,并把下面代码复制进去import    time
  import    redis
  from    flask    import    Flask
  app   =  Flask  ( __name__  )
  cache   =  redis  . Redis  ( host  = "redis"  ,  port  = 6379  )
  def    get_hit_count  ():
  retries   =  5
  while    True  :
  try  :
  return    cache  . incr  ( "hits"  )
  except    redis  . exceptions  . ConnectionError    as    exc  :
  if    retries   ==  0  :
  raise    exc
  retries   -=  1
  time  . sleep  ( 0.5  )
  @app  . route  ( "/"  )
  def    hello  ():
  count   =  get_hit_count  ()
  return    "Hello World! I have been seen {} times. "  . format  ( count  ) 创建requirements.txt文件,以下内容复制进去flask redis
  Step2:创建Dockerfile文件 FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP=app.py ENV FLASK_RUN_HOST=0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt RUN pip install -r requirements.txt EXPOSE 5000 COPY . . CMD ["flask", "run"]
  Step3:在docker-compose.yml中定义services version: "3.9" services:   web:     build: .     ports:       - "5000:5000"   redis:     image: "redis:alpine"
  Step4:用Docker compose构建和运行app 进入项目目录,运行docker-compose up $ docker  -compose   up 在浏览器访问http://localhost:5000/ ,刷新页面看变化查看使用compose构建的镜像$ docker   images
  Step5:绑定一个数据卷 version: "3.9" services:   web:     build: .     ports:       - "5000:5000"     volumes:       - .:/code     environment:       FLASK_ENV: development   redis:     image: "redis:alpine"
  将当前目录与容器的/code目录绑定,这样可以动态修改代码
  Step6:重新构建和运行app
  先docker-compose down停止服务,在构建 $ docker-compose down $ docker-compose upCompose file
  用YAML文件定义服务,默认文件是docker-compose.yml,包含4个顶级key,version、services、networks、volumes
  参考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub version
  指定本 yml 依从的 compose版本 services
  定义多个应用服务,包含环境配置、镜像构建等 build
  指定构建镜像的路径 version: "3.9" services:   webapp:     build: ./appblkio_config
  定义服务的block IO配置,参考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub container_name
  指定自定义容器名称 depends_on
  定义服务间启动或关闭的依赖关系 services:   web:     build: .     depends_on:       - db       - redis   redis:     image: redis   db:     image: postgrescommand
  覆盖容器启动的默认命令 command: [ "bundle", "exec", "thin", "-p", "3000" ]domainname
  domainname   declares a custom domain name to use for the service container. entrypoint
  覆盖容器默认的entrypoint env_file
  从文件中添加环境变量到容器,可以是一个或多个文件 env_file: .envenv_file:   - ./a.env   - ./b.env
  文件格式: # Set Rails/Rack environment RACK_ENV=development VAR="quoted"environment
  添加环境变量 environment:   RACK_ENV: development   SHOW: "true"   USER_INPUT:expose
  暴露端口,但不映射到宿主机,只被连接的服务访问,仅可以指定内部端口 expose:   - "3000"   - "8000"healthcheck
  用于检测 docker 服务是否健康运行。 healthcheck:   test: ["CMD", "curl", "-f", "http://localhost"] # 设置检测程序   interval: 1m30s  # 设置检测间隔   timeout: 10s # 设置检测超时时间   retries: 3 # 设置重试次数   start_period: 40s # 启动后,多少秒开始启动检测程序image
  指定容器运行的镜像 image: redis:5labels
  设置容器标签 labels:   com.example.description: "Accounting webapp"   com.example.department: "Finance"labels:   - "com.example.description=Accounting webapp"   - "com.example.department=Finance"links
  连接到另一个容器的网络,简单将就是让容器相互连通 web:   links:     - db     - db:database     - redislogging
  服务的日志记录配置,driver:指定服务容器的日志记录驱动程序,默认值为json-file。有以下三个选项 driver: "json-file" driver: "syslog" driver: "none"
  仅在 json-file 驱动程序下,可以使用以下参数,限制日志得数量和大小。 logging:   driver: json-file   options:     max-size: "200k" # 单个文件大小为200k     max-file: "10" # 最多10个文件
  syslog 驱动程序下,可以使用 syslog-address 指定日志接收地址。 logging:   driver: syslog   options:     syslog-address: "tcp://192.168.0.42:123"network_mode
  设置网络模式,格式如下: network_mode: "bridge" #桥接模式 network_mode: "host" network_mode: "none" network_mode: "service:[service name]"networks
  配置容器连接的网络 services:   some-service:     networks:       - some-network       - other-network networks:   some-network:     # Use a custom driver     driver: custom-driver-1   other-network:     # Use a custom driver which takes special options     driver: custom-driver-2services:   frontend:     image: awesome/webapp     networks:       - front-tier       - back-tier    monitoring:     image: awesome/monitoring     networks:       - admin    backend:     image: awesome/backend     networks:       back-tier:         aliases:           - database       admin:         aliases:           - mysql  networks:   front-tier:   back-tier:   admin:ipv4_address, ipv6_address
  指定ip地址 services:   frontend:     image: awesome/webapp     networks:       front-tier:         ipv4_address: 172.16.238.10         ipv6_address: 2001:3984:3989::10  networks:   front-tier:     ipam:       driver: default       config:         - subnet: "172.16.238.0/24"         - subnet: "2001:3984:3989::/64"ports
  端口映射,映射主机与容器端口,格式:Host:ontainer ports:      - "5000:5000"restart
  容器重启策略 restart: "no" restart: always restart: on-failure restart: unless-stoppedsecrets
  存储敏感数据,比如密码 services:   frontend:     image: awesome/webapp     secrets:       - server-certificate secrets:   server-certificate:     file: ./server.certvolumes
  将主机数据卷挂载到容器 services:   db:     image: postgres:latest     volumes:       - "/localhost/postgres.sock:/var/run/postgres/postgres.sock"       - "/localhost/data:/var/lib/postgresql/data"working_dir
  覆盖容器工作目录 Volumes 顶级目录services:   backend:     image: awesome/database     volumes:       - db-data:/etc/data    backup:     image: backup-service     volumes:       - db-data:/var/lib/backup/data  volumes:   db-data:Networks 顶级目录services:   frontend:     image: awesome/webapp     networks:       - front-tier       - back-tier  networks:   front-tier:   back-tier:     driver: bridgedocker-compose 命令$ docker-compose --help Define and run multi-container applications with Docker.  Usage:   docker-compose [-f ...] [--profile ...] [options] [COMMAND] [ARGS...]   docker-compose -h|--help  Options:   -f, --file FILE             Specify an alternate compose file                               (default: docker-compose.yml)   -p, --project-name NAME     Specify an alternate project name                               (default: directory name)   --profile NAME              Specify a profile to enable   --verbose                   Show more output   --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)   --no-ansi                   Do not print ANSI control characters   -v, --version               Print version and exit   -H, --host HOST             Daemon socket to connect to    --tls                       Use TLS; implied by --tlsverify   --tlscacert CA_PATH         Trust certs signed only by this CA   --tlscert CLIENT_CERT_PATH  Path to TLS certificate file   --tlskey TLS_KEY_PATH       Path to TLS key file   --tlsverify                 Use TLS and verify the remote   --skip-hostname-check       Don"t check the daemon"s hostname against the                               name specified in the client certificate   --project-directory PATH    Specify an alternate working directory                               (default: the path of the Compose file)   --compatibility             If set, Compose will attempt to convert deploy                               keys in v3 files to their non-Swarm equivalent  Commands:   build              Build or rebuild services   bundle             Generate a Docker bundle from the Compose file   config             Validate and view the Compose file   create             Create services   down               Stop and remove containers, networks, images, and volumes   events             Receive real time events from containers   exec               Execute a command in a running container   help               Get help on a command   images             List images   kill               Kill containers   logs               View output from containers   pause              Pause services   port               Print the public port for a port binding   ps                 List containers   pull               Pull service images   push               Push service images   restart            Restart services   rm                 Remove stopped containers   run                Run a one-off command   scale              Set number of containers for a service   start              Start services   stop               Stop services   top                Display the running processes   unpause            Unpause services   up                 Create and start containers   version            Show the Docker-Compose version informationSwarm集群

可怡蓝牙小知识入耳式耳机容易脏?办法来咯入耳式耳机容易藏污纳垢,下面可怡教你如何清理干净啦一准备工具异丙醇棉签消毒纸巾纸巾或干布清洁用的柔软牙刷橡皮胶泥,比如蓝丁胶洗洁精和温水找个大一点的书桌,稍微宽敞一点,操作方便一些漫威迷必入的蓝牙无线耳机,颜值爆表说平替款不太合适,虽然价格不高,但某些功能相对airpods甚至有所超远。苹果蓝牙耳机一直风很大,但价格也真的挑人。特别是学生党刚工作的小伙伴,可能要咬咬牙,但现在我觉得duck不可怡蓝牙小知识为什么蓝牙耳机听音乐有滋滋滋的杂音很多人新买的蓝牙耳机,发现听音乐的时候会一直有滋滋滋的杂音,怀疑蓝牙耳机有电流声首先要判断是电流声还是底噪,大家常常会混淆电流声和底噪这两个概念。今天可怡来讲一下蓝牙耳机的电流声和可怡第二季度生日会属于你的重要时刻小时候生日是一家人的欢乐有爸爸妈妈有蛋糕礼物上学时生日是同学们的联欢有同窗情谊有举杯欢畅工作后属于你的重要时刻我们一直放在心里2020年7月24日第二季度员工生日会在公司会议室拉开蓝牙耳机IP多少是防水级别?首先大家记住只要低于IPX4,那么基本就不能防水。IPX13级,防水性能都不是很好,不能完全防水IPX4可以防止飞溅的水滴进入IPX5可以防止喷射的水进入IPX6防止大浪浸入IPX又是眼镜,又是耳机?可怡一个全搞定最近因为疫情,耳朵太南了!它要承担戴眼镜戴耳机的工作,还要戴上口罩。有没有可能更轻松一点?COOYEE可怡推出了一款蓝牙骨传导太阳镜,可以理解为拥有耳机功能的眼镜,采用最新的声音材新款宝马X7路试谍照曝光2022年上半年亮相日前,我们从海外媒体处获取了一组新款宝马X7的路试谍照。据悉,新车将于2022年上半年正式亮相。外观方面,新车采用了尺寸更大的进气格栅,两侧为分体式大灯组,内部为并列式布局。车身侧2022款雪佛兰探界者上市新增48V轻混系统日前,上汽通用官方宣布旗下2022款雪佛兰探界者正式上市,新车指导价为16。99万元23。99万元。据悉,新车的内饰配置进行了优化升级。新车外观方面基本延续了家族式设计风格,整体看不给碰瓷企业可乘之机!夏普起诉OPPO吃瘪,专利储备深厚就是硬气近些年来,专利诉讼已经成为了一大热名词,特别是在手机圈颇为常见。不过很多公司提出专利诉讼也并不都是为了维护自身权利,而是打着专利诉讼的名号以获得不菲的专利赔偿金。例如为了逼迫OPP新款雷克萨斯LS官图发布配置方面优化升级近日,雷克萨斯官方发布了旗下2022款雷克萨斯LS车型的官图。据悉,新车配置方面进行了升级优化,将全系标配雷克萨斯全新的主动安全系统。2022款雷克萨斯LS的外观基本延续了现款车型三星新品发布会倒计时,折叠屏手机大更新还有一天,就到了三星发布新品的时间了,此前三星表示,将在8月11日2200全球同步揭晓旗下新品。到时很可能推出全新一代的GalaxyZFold3和GalaxyZFlip3折叠屏手机
一片简单的钢化膜,有哪些门道?应该如何选大城市里的大伙,人手一部手机已成常态,有的有的甚至有两部三部手机贴身,但由于手机是随身物品,使用的频率又高,手机也是现如最易损坏的数码产品之一,可能一个不小心,花朵就绽放在手机屏幕吸睛且特别的耳机HIFIMANTWS600A七天体验分享最近又拿到了一款耳机,它是HIFIMAN的TWS600A,这个耳机我大概体验了7天左右,其中有一天深度体验了一番这个耳机,下面就跟大家正式聊聊这款耳机给我的体验!开箱篇包装盒正面以塞宾智麦SmartMike收音只是基础,还有Vlog博主梦寐的神奇功能在社交娱乐短视频兴起时,短视频新媒体呈现百花齐放之势,也正是因为如此,越来越多的人涌入短视频平台,只需一部手机,你就能成为一个VLog博主。虽说不一定能大红大火,但进入短视频平台的母亲节的特别采访,爱玩游戏的母亲对孩子有何影响母亲节当天,国产知名外设品牌北通发布了一个与家人朋友情人相关的主题视频,起因是因为在这次疫情期间,北通收到很多用户在购买游戏外设时备注不要在产品包装上注明是游戏手柄等类似的留言,虽机械键位多平台兼容,北通宙斯游戏手柄实测值得入手吗?作为一名资深的游戏爱好者,游戏已经离不开生活,闲暇之余有除了写写稿子之外就是玩游戏,之前给大家分享过北通的一款高性价比手柄,今天给大家带来北通最新的精英手柄北通宙斯游戏手柄的体验分北通G2你与游戏大神只差了一个手柄,技术不一定非得靠苦练记得在上一家公司的时候,办公室午休时间一到,TIMI的声音就在我耳边环绕,而我应该是在众人里段位最低的存在,卑微的的黄金段位,但即便这样,办公室里的人也能把我拉高到人均段位大师的水莱卡mini直饮机养生寻味二合一,滤水煮茶谈人生作为一个做过手机分期卖过女装开过茶饮店等等的数码博主,在以上经历中,最累的就属开茶饮店了,每天早上9点开店,凌晨23点停业,日复一日。钱没挣多少,人倒是快累坏了,好在,奶茶店不是我TBR电动牙刷体验科学刷牙,健康护齿想要有一口好牙,少不了每日洗刷护理,而刷牙就是最好的护理方式,想像小姑娘那样拥有一口好牙,那必须每天刷牙,且用正确的方式清洁牙齿,否则即便早晚刷牙,依旧有蛀牙等风险。大多数人应该都南卡A1用功能说话,千元级别的降噪耳机手中的无线耳机越来越多,还没来的及细品,又来了一款新的降噪耳机,市场厮杀越是激烈,产品的更新频率也是随之上升,先前也有说过,国内的蓝牙耳机还是一片蓝海,目前还没有真正奠定中端市场的平民价位的优质耳机体验,TaoTronicsBH047头戴式降噪耳机下雨天的心情总是很平静,就想哼哼小曲听听歌,最近刚好入手了一款平民级的头戴式降噪蓝牙耳机,今天就来跟大家分享分享TaoTronicsBH047这款耳机,TaoTronics这个品牌派美特PaMuSlideMiniampampquot真无线耳机ampampquot,不止于无线连接最近收到一款新的真无线蓝牙耳机,这款产品有一个非常亮眼的功能,那就是无线充电,这也是除苹果耳机外,我接触到的第一款300元价位的真无线蓝牙耳机,它相较普通无线耳机还多个支持无线充电