compose配置文件参数详解

2023-11-17

 

本文介绍compose配置文件参数的使用,熟练编写compose文件

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build: /root/docker_demo/nginx/
    ports:
      - "80:80"
    links:
      - php:php
    volumes:
      - "/www:/usr/local/nginx/html"
  php:
    image: php
    expose:
      - "9000"
    volumes:
      - "/www:/usr/local/nginx/html"

上面的一个例子version代表版本

什么版本的docker-compose对应什么版本的docker:

services就是compose中定义的服务,compose管理的是project、service、container,project如果没有指定就是默认的lnmp.yml文件的lnmp

nginx、php就是属于services的子集栏,定义了两个service

nginx服务中有各种参数:

build:和docker中的build构建一样,后面的路径指向Dockerfile的位置:

[root@docker lnmp]# ll /root/docker_demo/nginx/
total 832
-rw-r--r--. 1 root root   1133 Nov  6 13:40 Dockerfile
-rw-r--r--. 1 root root   1033 Nov  6 10:17 fastcgi_params
-rw-r--r--. 1 root root 833473 Nov  6 09:35 nginx-1.8.1.tar.gz
-rw-r--r--. 1 root root    776 Nov  6 10:16 nginx.conf
-rw-r--r--. 1 root root    341 Nov  6 16:43 www.conf

ports参数就是docker在docker run启动容器时-p选项的意思差不多,映射到本机host,前者的端口是本机host,后面是container_port

links参数也是docker run在启动容器时--link选项的意思差不多,用于与容器间的互联访问,php:php,前者php是定义的service名称,后者的php是给它定义了一个别名

volumes:与docker run在启动容器时-v选项的意思差不多,用于host与container之间的映射挂载,前者是host_mount_dir,后面是container中的目录

volumes:
  # Just specify a path and let the Engine create a volume
  - /var/lib/mysql

  # Specify an absolute path mapping
  - /opt/data:/var/lib/mysql

  # Path on the host, relative to the Compose file
  - ./cache:/tmp/cache

  # User-relative path
  - ~/configs:/etc/configs/:ro

  # Named volume
  - datavolume:/var/lib/mysql

在下面的php这个service中:

image:代表的就是使用的docker images中的某个镜像名称去开启container(默认tag为latest),如果本地没有镜像将会进行pull 

image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd

有了上面的第一个简单的compose yml文件,于是进行启动container:

[root@docker lnmp]# docker-compose -f lnmp.yaml up --build

由于我这里进行了配置文件的修改,所以不再单独的up,而是up --build(If you change a service’s Dockerfile or the contents of its build directory, run docker-compose build to rebuild it.)

单独的docker-compose -f lnmp.yaml build只会进行build而不会进行启动容器,之后还需进行docker-compose -f lnmp.yaml up

 build: /root/docker_demo/nginx/,build参数这里可以指定解决路径也可以以compose的项目路径的相对路径进行指定

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile

build参数的子集也可以根据Dockerfile构建的context来进行build

在build子集中还有args的使用,配合Dockerfile中的ARG结合使用

[root@docker nginx]# cat Dockerfile 
FROM centos_init:v2

MAINTAINER json_hc@163.com
ARG buildno
RUN echo "Build number: $buildno"

上面的Dockerfile中定义了build,但是并没有赋值,RUN执行打印这个值,而在compose的yml中:

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        buildno: 2

定义了buildno的值,于是在docker-compose执行构建时使用了这个值,下面是过程

如果仅仅在yml文件中定义了args变量,而没有在Dockerfile中定义相同的变量,将会报错:

[Warning] One or more build-args [foo] were not consumed.

ARG在Dockerfile中的用法:

ARG <name>[=<default value>]
设置变量命令,ARG命令定义了一个变量,在docker build创建镜像的时候,使用 --build-arg <varname>=<value>来指定参数
ARG user1
ARG buildno
或者定义默认值
ARG user1=someuser
ARG buildno=1

ARG只是在build构建过程中使用,构建完成后,变量将会消失和ENV有着明显的区别

而在compose的yml文件中args的定义:

build:
  context: .
  args:
    buildno: 1
    password: secret

build:
  context: .
  args:
    - buildno=1
    - password=secret

上面两种方式都可以

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        - buildno=2

command参数,覆盖容器内默认的命令

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        - buildno=2
    command: ["/usr/local/nginx/sbin/nginx"]

这里定义command的命令,而Dockerfile中的nginx的启动命令:

CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

所以在[root@docker lnmp]# docker-compose -f lnmp.yaml up --build

构建并启动时并不会成功:

可以明显的看到command定义的命令替换掉了Dockerfile中的CMD命令

 

container_name:自定义容器名

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        - buildno=2
    container_name: lnmp-nginx

可以看见nginx服务的容器名已经改为lnmp-nginx了

 

depends_on:定义服务间的依赖关系

比如数据库db,必须在web启动之前进行启动,也就是说web启动依赖db的启动

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        - buildno=2
    container_name: lnmp-nginx
    depends_on:
      - db
    ports:
      - "80:80"
    links:
      - php:php
    volumes:
      - "/www:/usr/local/nginx/html"
  php:
    image: php
    expose:
      - "9000"
    volumes:
      - "/www:/usr/local/nginx/html"
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: redhat
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

可以看出nginx服务是最后启动容器的,由于nginx依赖db,而php与nginx有link,所以nginx最后启动

 

dns:设置dns

dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9

可以设置是一个单一值,也可以是一个列表

 

dns_search:自定义搜索域:

dns_search: example.com
dns_search:
  - dc1.example.com
  - dc2.example.com

可以设置为单一值,也可以是一个列表

 

entrypoint:覆盖Dockerfile中的entrypoint,用法同Dockerfile中的用法

[root@docker lnmp]# cat lnmp.yaml
version: '3'
services:
  nginx:
    build:
      context: /root/docker_demo/nginx/
      dockerfile: /root/docker_demo/nginx/Dockerfile
      args:
        - buildno=2
    container_name: lnmp-nginx
    entrypoint: ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

[root@docker lnmp]# docker-compose -f lnmp.yaml ps  
   Name                 Command               State           Ports         
----------------------------------------------------------------------------
lnmp-nginx   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_db_1    docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_php_1   /usr/local/php/sbin/php-fpm      Up      9000/tcp  

 

env_file:将定义的变量编写在文件中,然后在yml文件中进行添加

env_file: .env

env_file:
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env

创建env_file文件mysql_env.txt:

[root@docker lnmp]# ll
total 16
-rw-r--r--. 1 root root 477 Nov  9 17:00 docker-compose.yml.bak
-rw-r--r--. 1 root root 550 Nov 10 15:45 lnmp.yaml
-rw-r--r--. 1 root root 271 Nov 10 10:26 lnmp.yaml.bak
-rw-r--r--. 1 root root  98 Nov 10 15:46 mysql_env.txt

查看定义的变量:

[root@docker lnmp]# cat mysql_env.txt 
MYSQL_ROOT_PASSWORD=redhat
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress

变量的定义格式为这样

然后进行docker-compose:

[root@docker lnmp]# docker-compose -f lnmp.yaml up --build

进入到db服务中进行验证变量是否创建成功:

[root@docker nginx]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml exec db sh
# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

可以看见MySQL的root密码已经设置,也创建了数据库wordpress等等

 

environment:添加环境变量,可以是一个字典也可以是数组

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=redhat
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress

定义完成后进行构建并启动后,进行验证:

[root@docker nginx]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml exec db sh
# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

 

expose:暴露container的端口,但是并没有映射到host主机上,用法类似于Dockerfile中的EXPOSE

  php:
    image: php
    expose:
      - "9000"
    volumes:
      - "/www:/usr/local/nginx/html"

 

external_links:

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

 链接到 docker-compose.yml 外部的容器,甚至 并非 Compose 管理的容器。参数格式跟 links 类似。

这个参数下篇文章有介绍

 

extra_hosts:添加hostname映射,类似于docker cli下面的--add-host

    extra_hosts:
      - "www.hcstart.com:192.168.101.14"

然后将这个compose file进行up:

[root@docker lnmp]# docker-compose -f lnmp.yml up --build
Creating network "lnmp_net1" with driver "bridge"
Creating lnmp-php ... 
Creating lnmp-php ... done
Creating lnmp-nginx ... 
Creating lnmp-nginx ... done
Attaching to lnmp-php, lnmp-nginx
[root@docker lnmp]# docker-compose -f lnmp.yml exec nginx cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.101.14  www.hcstart.com
172.19.0.3      35cc14084be9

上面的/etc/hosts就可以看见刚刚加入的www.hctsrat.com映射了

 

healthcheck:配置一个检查去测试服务中的容器是否运行正常

[root@docker lnmp]# cat lnmp.yml|grep health -A 4
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3

查看healthcheck的状态输出:

[root@docker lnmp]# docker inspect lnmp-nginx
            "Health": {
                "Status": "healthy",
                "FailingStreak": 0,
                "Log": [
                    {
                        "Start": "2017-10-27T03:52:37.921723965-04:00",
                        "End": "2017-10-27T03:52:38.021941235-04:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0<h1>hello nginx and php</h1>\n\r100    29  100    29    0     0   5741      0 --:--:-- --:--:-- --:--:--  7250\n"
                    },

healthcheck中选项的详解:https://docs.docker.com/engine/reference/builder/#healthcheck

 

labels:添加元数据到container中,查看现有容器的labels:

[root@docker lnmp]# docker inspect -f {{.Config.Labels}} lnmp-nginx
map[com.docker.compose.oneoff:False com.docker.compose.service:nginx com.docker.compose.version:1.17.0 license:GPLv2 vendor:CentOS build-date:20170911 com.docker.compose.config-hash:edaa6c6d8f12639e28cb4bcdffda4961ef5a90f076e9017b204dacda56525e5b com.docker.compose.container-number:1 com.docker.compose.project:lnmp name:CentOS Base Image]

 

logging:为服务配置记录日志

[root@docker lnmp]# cat lnmp.yml|grep logging -A 4
    logging:
      driver: "json-file"
      options:
        max-size: "2000k"
        max-file: "10"

logging支持很多driver,而每一个driver对应的options都不一样:

[root@docker lnmp]# docker inspect -f {{.HostConfig.LogConfig}} lnmp-nginx
{json-file map[max-file:10 max-size:2000k]}
[root@docker lnmp]# docker info |grep 'Logging Driver'
Logging Driver: json-file

更多其他的driver查看:https://docs.docker.com/engine/admin/logging/overview/

 

sysctls:在容器中设置内核参数

sysctls:
  net.core.somaxconn: 1024
  net.ipv4.tcp_syncookies: 0

sysctls:
  - net.core.somaxconn=1024
  - net.ipv4.tcp_syncookies=0

 

转载于:https://www.cnblogs.com/jsonhc/p/7814138.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

compose配置文件参数详解 的相关文章

  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • Xdebug V3 不会停止 VSCode 中的断点

    我正在尝试使用 VSCode 在 XAMPP 上进行调试 但没有成功 我知道有很多关于这个的问题 我已经尽了一切努力 但仍然行不通 我的 xdebug 扩展确实有一件奇怪的事情 我目前使用 PHP v7 4 12 和 Xdebug 版本 3
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 如何在 JavaScript 中创建服务器端进度指示器?

    我想在我的网站中创建一个部分 用户可以在其中进行一些简单的操作update纽扣 这些中的每一个update按钮将发送到服务器 并在幕后进行长时间的处理 当服务器处理数据时 我希望用户有某种进度指示器 例如进度条或文本百分比 我使用 jQue
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • 使用值填充的 Symfony2 自定义字段类型

    这是先前问题的后续问题Symfony2 自定义表单类型或扩展 https stackoverflow com questions 24079288 symfony2 custom form type or extension 我正在尝试为订
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • PHPUnit - 模拟 S3Client 无法正常工作

    库 aws aws sdk php 2 PHP 版本 PHP 5 4 24 cli 作曲家 json require php gt 5 3 1 aws aws sdk php 2 require dev phpunit phpunit 4

随机推荐

  • git修改仓库名次之后,本地仓库重定向问题

    在github网页中更改了项目的名次 再次推送的时候报这样的错误fatal repository https xxx git not founds 使用下面的命令将推送的远程仓库重定向 git remote set url origin u
  • 数据压缩与管理:掌握Linux VDO和LVM的力量

    1 逻辑卷 LVM Logical Volume Management 动态的为服务器磁盘添加空间 而不会影响原磁盘的数据 也不需要对原始磁盘重新分区 1 1 LVM介绍 以下是LVM的示意图 我们拿到一块硬盘后首先对齐进行划分分区 也就得
  • [免签约]微信+支付宝个人收款解决方案

    方案原理 使用一台闲置的安卓手机专门用来做收款 收到付款时手机会有通知提示 对该通知进行监控 监控到后发送数据到服务器 服务器根据订单情况支付情况判断是否成功完成一轮下单支付操作 如果成功则自动发货 具体实现流程 网页前端展示商品 用户浏览
  • 华容道html源码,华容道(项目源代码)

    实例简介 Java华容道游戏完整代码 添加了图片与音效 设置了三个关卡 有注释 实例截图 核心代码 华容道 项目源代码 华容道 bin HuaRong About class BackgroundPanel class HuaRong 1
  • 学习PySOT避坑指南

    PySOT是商汤 SenseTime视频智能研究团队 开源的目标跟踪库 实现了最新的单目标跟踪算法 主要包含 SiamRPN SiamMask 使用Python编写的 基于Pytorch深度学习框架 该软件系统还包含了评估跟踪算法的Pyth
  • Java生成6位随机码(大小写+数字)

    char sources new char a b c d e f g h i j k l m n
  • 【Taro】微信小程序隐私协议改造

    微信要求小程序开发者在2023 9 15日前将小程序中调用获取用户隐私api的接口时 都必须要先让用户授权 如果用户拒绝授权 那么小程序的对应接口或组件将直接禁用 那么首先 请将微信小程序开发者工具 详情 本地设置 基础调试库 切换至2 3
  • QT实现用户登录功能

    功能 1 提供登录界面 客户端 2 服务器端用数据库来存储用户名和密码 3 注册时客户端将注册信息发送给服务器端 并进行验证 如果注册名可用 添加进数据库并返回客户端添加成功信息 4 登录时客户端将登录信息发送给服务器端进行验证 服务端返回
  • Ubuntu14.04下配置CGAL+boost+QT+Suitesparse

    这两天突然间想把以前在linux在没有调通的程序给调通 这个程序需要用到CGAL和Suitesparse 稀疏矩阵计算 大家上网查哈 而CGAL又依赖于boost 和QT 所以总共需要安装boost QT suitesparse和CGAL
  • java二维数组的创建,java二维数组创建方法

    java动态创建二维数组 从零学java笔录 第31篇 图解二位数组在内存中存储 java二维数组动态赋值 java二维数组创建方法 二维数组的定义 type arrayName type arrayName Java 二维数组的声明 初始
  • 数据可视化入门学习——Jupyter Notebook 和绘图有关的几个魔术指令

    数据可视化 Jupyter Notebook 和绘图有关的几个魔术指令 matplotlib inline 这是默认的模式 输出的图片是静态的 matplotlib auto 在这个模式下会弹出一个单独 的绘图窗口 和在pycharm中一样
  • MyBatis枚举映射类讨论

    前言 本篇需要对于MyBatis有一定的认识 而且只是针对于TypeHandler接口来讨论 暂不讨论其他方面的问题 TypeHandler概叙 TypeHandler是MyBatis设计的一个用于参数的接口 你们会不会很好奇MyBatis
  • 【error】 java.net.MalformedURLException: no protocol,未指定通信协议

    目录 1 报错信息 2 报错原因 3 处理方法 1 报错信息 在通过 IP 地址及端口号调用远程方法时 报错信息如下 java net MalformedURLException no protocol 由 no protocol 可知 系
  • 海凌科7621开发板适配新版openwrt

    最近在海凌科买了一块7621的开发板 flash是32M的 ddram是256M的 性价比感觉不错 海凌科提供的openwrt是比较旧的版本 在openwrt最新的19 07版本里已有的硬件都有一定的差距 因此修改一下相关配置 可以用ope
  • PHP如何使用循环语句?用法详细指南

    像任何其他语言一样 PHP中的循环用于多次执行一条语句或一段语句 直到满足特定条件为止 这有助于用户节省多次编写同一代码的时间和精力 PHP支持四种类型的循环技术 for循环 while循环 循环执行 foreach循环 现在让我们详细了解
  • 包装类自动装箱和拆箱原理

    包装类的自动装箱和自动拆箱 包装类的自动装箱和拆箱是JDK1 5的新特性 一 首先 了解自动装箱的过程 有两种自动装箱过程 第一种 128 127 之内 调用相应包装类的valueOf 例如 Integer i 12 Integer a 2
  • L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目 题目链接 题解 DFS 孩子向父母方向连边 将孩子视为根节点 首先判断输入两个人的性别 如果不同再分别以二者为起点进行dfs 前者五服之内的亲属都标记一下 以后者为起点dfs 如果遇到了标记的人 那么说明五服之内存在公共祖先 不可以结
  • extern C 在c/c++中的使用

    http blog csdn net jscese article details 37821961 1 问题定义 在研究操作系统源代码或者在嵌入式系统中编写程序时 经常会发现下面这种用法 cpp view plain copy print
  • 引入UnityEngine.dll中的巨坑

    正确路径 C Program Files Unity Editor Data Managed 此目录下只需引用UnityEngine dll就可以访问MonoBehaviour 其他路径 C Program Files Unity Edit
  • compose配置文件参数详解

    本文介绍compose配置文件参数的使用 熟练编写compose文件 root docker lnmp cat lnmp yaml version 3 services nginx build root docker demo nginx