参考地址:https://blog.csdn.net/Kiloveyousmile/article/details/79830810

参考地址:https://docs.docker.com/compose/networking/#configure-the-default-network

参考地址:https://www.imooc.com/article/34135

参考地址:https://www.jianshu.com/p/2217cfed29d7

====================================================

一.docker-compose.yml属性详解

  1.使用注意

  2.属性详解

  3.1 compose格式对应docker引擎版本

  3.2 关于容器时区设置和mysql数据库自己的时区设置

二.docker-compose 命令详解

====================================================

一.docker-compose.yml属性详解

docker-compose.yml文本内容如下:

version : '3'
services: swapping:
container_name: swapping-compose
build:
context: .
dockerfile: Dockerfile-swapping
ports:
- "9666:9666"
volumes:
- .:/vol/development
depends_on:
- mysql
links:
- "mysql:mysql"
restart: always
networks:
- my-network
environment:
- TZ=Asia/Shanghai mysql:
container_name: mysql-compose
image: mysql:5.7
ports:
- "33061:3306"
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00'
]
environment:
MYSQL_DATABASE: swapping
MYSQL_ROOT_PASSWORD: 398023
MYSQL_ROOT_HOST: '%'
restart: always
networks:
- my-network
networks:
my-network:

使用注意:

  1.docker-compose.yml[或者docker-compose.yaml]文件

  2.构建服务的镜像需要的Dockerfile文件

  3.构建服务需要的jar包

需要尽量放在同一个目录下!!

详细解释:

version : '3'        #docker引擎对应所支持的docker-compose文本格式
services: #本工程的服务配置列表 swapping: #spring boot的服务名,服务名自定义
container_name: swapping-compose
#本spring boot服务之后启动的容器实例的名字,如果指定,按照这个命名容器,如果未指定,容器命名规则是
#【[compose文件所在目录]_[服务名]_1】,例如【swappingdockercompose_swapping_1】
            #如果多启动,也就是docker-compose scale swapping=3 mysql=2的话,就不需要指定容器名称,否则会报错 容器名重复存在的问题
build: #基于Dockerfile文件构建镜像时使用的属性
context: . #代表当前目录,也可以指定绝对路径[/path/test/Dockerfile]或相对路径[../test/Dockerfile],尽量放在当前目录,便于管理
dockerfile: Dockerfile-swapping #指定Dockerfile文件名。如果context指定了文件名,这里就不用本属性了
ports: #影射端口属性
- "9666:9666" #建议使用字符串格式,指定宿主机端口映射到本容器的端口
volumes: #挂载属性
- .:/vol/development
#挂载路径在compose配置文件中只能指定容器内的目录,而docker run命令可以指定[宿主机目录:容器内目录]的挂载方式。可以使用:ro对容器内目录设置只读,来保护宿主机的文件系统
depends_on: #本服务启动,需要依赖哪些别的服务 例如这里;mysql服务就会先于swapping服务启动。至于配置多个的话,depends_on内的多个依赖的启动先后顺序未测试过
- mysql
links: #与depends_on相对应,上面控制启动顺序,这个控制容器连接问题。
- "mysql:mysql" #值可以是- mysql[- 服务名],也可以是- "mysql:mysql"[- "服务名:别名"]
restart: always #是否随docker服务启动重启
networks: #加入指定网络
- my-network #自定义的网络名
environment: #environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中,类似 docker run -e 的效果。设置容器的环境变量
- TZ=Asia/Shanghai #这里设置容器的时区为亚洲上海,也就解决了容器通过compose编排启动的 时区问题!!!!解决了容器的时区问题!!! mysql: #服务名叫mysql,自定义
container_name: mysql-compose #容器名
image: mysql:5.7 #虽然没有使用build,但使用了image,指定基于mysql:5.7镜像为基础镜像来构建镜像。【使用build基于Dockerfile文件构建,Dockerfile文件中也有FROM基于基础镜像】
ports:
- "33061:3306"
command: [ #使用 command 可以覆盖容器启动后默认执行的命令
'--character-set-server=utf8mb4', #设置数据库表的数据集
'--collation-server=utf8mb4_unicode_ci', #设置数据库表的数据集
'--default-time-zone=+8:00' #设置mysql数据库的 时区问题!!!! 而不是设置容器的时区问题!!!!
]
environment:
MYSQL_DATABASE: swapping #设置初始的数据库名
MYSQL_ROOT_PASSWORD: 398023 #设置root连接密码
MYSQL_ROOT_HOST: '%'
restart: always
networks:
- my-network
networks: #关于compose中的networks的详细使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810
my-network: #自定义的网络,会在第一次构建时候创建自定义网络,默认是bridge

1.compose格式对应docker引擎版本

官方地址:【https://docs.docker.com/compose/compose-file/#compose-and-docker-compatibility-matrix

查看docker版本信息命令

2.关于容器时区设置和mysql数据库自己的时区设置

设置容器的时区,需要添加

environment:
- TZ=Asia/Shanghai

而数据库的时区设置【和编码设置】就可以,当然也可以在mysql服务既设置容器时区,又设置数据库时区。不冲突。

command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00'
]

二.docker-compose命令详解

请直接参考:https://www.imooc.com/article/34135

用的多了,自己就会了。这里就不记录了!!!

【docker-compose】docker-compose.yml文本内容详解 + docker-compose命令详解 + docker-compose启动服务容器时区设置的更多相关文章

  1. linux shell 脚本攻略学习16--wc命令详解,tree命令详解

    在文本处理的工作中,统计文件的行数,单词数和字符数非常有用.而对于开发人员本身来说,统计LOC(line of code ,代码行数)是一件重要的工作.linux中有什么命令可以帮助我们做统计呢?没错 ...

  2. linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解

    文件权限详解 一.chmod命令详解 文件权限和所有权是Unix/Linux文件系统最显著的特征之一.linux中的每一个文件都与多种权限类型相关联,在这些权限中主要分类为3种: 用户(User)是文 ...

  3. Linux 路由表详解及 route 命令详解

    参考资料 Linux 内核的路由表 通过 route 命令查看 Linux 内核的路由表: [root@VM_139_74_centos ~]# route Kernel IP routing tab ...

  4. shell脚本--显示文本内容

    shell脚本显示文本内容及相关的常用命令有cat.more.less.head.tail.nl 首先是cat,cat最常用的就是一次性显示文件的所有内容,如果一个文件的内容很多的话,那么就不是很方便 ...

  5. docker容器时区问题

    原文:docker容器时区问题 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/article/details/80890868 本系列目录 ...

  6. 【Linux 运维】查看网络连接状态信息之netstat和ss命令详解

    一.netstat 常用命令详解 通过man netstat可以查看netstat的帮助信息: netstat 命令:用于显示各种网络相关信息,如网络连接,路由表,接口状态,无效连接,组播成员 等等. ...

  7. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

  8. 附003.Docker Compose命令详解

    一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...

  9. docker compose启动服务超时重启记录

    一.停docker systemctl stop docker 然后ps -aux grep docker发现有些docker进程还是存在,此时强杀存在的docker进程:ps -aux|grep d ...

随机推荐

  1. jmock2.5 基本教程

    目录 第0章 概述 第1章 jmock初体验 第2章 期望 第3章 返回值 第4章 参数匹配 第5章 指定方法调用次数 第6章 指定执行序列 第7章 状态机 第0章 概述 现在的dev不是仅仅要写co ...

  2. RCTF2015 pwn试题分析

    pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制. 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行sys ...

  3. loadrunner录制时,设置能不记录所有的事件

    loadrunner录制时,设置能不记录所有的事件 可以做如下两点设置: 1. 在record option下的recording选项卡下选择html advance,在script type下选择A ...

  4. Django实战(8):对比RoR与Django的输入校验机制

    rails有一个”简洁.完美的验证机制,无比强大的表达式和验证框架“.在<Agile Web Development with Rails 4th>一书的7.1节向我们展示了如何验证Pro ...

  5. tp5总结(二)

    1.简化路由[一方面可以更好的让搜索引擎抓取:另一方面简化路由,利于记忆] 1-1.在[public/]下面创建admin.php 复制index.php 然后绑定前后台模块define('BIND_ ...

  6. Hadoop整理三(Hadoop分布式计算框架MapReduce)

    一.概念 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思想.它极大 ...

  7. Noip模拟题 Matrix [递推,组合数]

    Matrix 时间限制: 1 Sec  内存限制: 512 MB 题目描述 小 z 的女朋友送给小 z 一个 n × n 的矩阵.但是矩阵实在太大了,小 z 的女朋友拿不动,只能带给他两个长度为 n ...

  8. Leaving Auction CF 749D

    题目:http://codeforces.com/problemset/problem/749/D 题目大意: 有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价 每个叫牌 ...

  9. awk 基本函数用法

    gsub函数有点类似于sed查找和替换.它允许替换一个字符串或字符为另一个字符串或字符,并以正则表达式的形式执行.第一个函数作用于记录$0,第二个gsub函数允许指定目标,然而,如果未指定目标,缺省为 ...

  10. [ 原创 ] Java基础5--abstract class和interface的区别

    1.含有abstract抽象修饰符的类就是抽象类.abstract 类不能创建实例对象 2.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不 ...