一、概要
官方文档
大部分命令都可以运行在一个或多个服务上。如果没有特别的说明,命令应用在项目所有的服务上。
执行 docker-compose [COMMAND] --help 查看具体某个命令的使用说明(从入门到放弃)
Compose与Docke版本的兼容性
| compose版本 | Docker 版本 |
|---|---|
| 3.7 | 18.06.0+ |
| 3.6 | 18.02.0+ |
| 3.5 | 17.12.0+ |
| 3.4 | 17.09.0+ |
| 3.3 | 17.06.0+ |
| 3.2 | 17.04.0+ |
| 3.1 | 1.13.1+ |
| 3.0 | 1.13.0+ |
| 2.4 | 17.12.0+ |
| 2.3 | 17.06.0+ |
| 2.2 | 1.13.0+ |
| 2.1 | 1.12.0+ |
| 2.0 | 1.10.0+ |
| 1.0 | 1.9.1.+ |
二、基础使用
1、yml模板
- 注意建议把注释删掉,以免出现运行出错的情况
- 注意yml语法格式
# 指定compose 版本
version: '3'
services:
webapp:
# 指向dockerfile文件
build: ./
ports:
- '8080:8080'
# 依赖于其他的容器
links:
- mysql
mysql:
image: mysql:5.7.22
restart: always
# 容器的名称
container_name: mysql
# 映射端口 相当于 -p 宿主机端口:容器端口
ports:
- '3306:3306'
# 设置环境变量
environment:
# 设置root用户的密码
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: mysql
MYSQL_PASSWORD: mysql
# 设置时区
TZ: Asia/Shanghai
command:
# 防止低版本的连接客服报错的问题
--default-authentication-plugin=mysql_native_password
# 设置数据库的编码
--character-set-server=utf8mb4
# 设置数据库默认的排序方式
--collation-server=utf8mb4_general_ci
# 不允许时间字段 not null
--explicit_defaults_for_timestamp=true
# Linux 表名区分大小写 1 表示不区分大小写
--lower_case_table_names=1
# 挂载
volumes:
# 数据的数据挂载到容器中
- ./mysql/data:/var/lib/mysql
- ./mysql/log:/var/log/mysql
- ./mysql/config:/etc/mysql
image
2、dockerfile
FROM ubuntu
# java相关变量名
# 根据你自己的版本修改成对应的
ENV java jdk-8u221-linux-x64.tar.gz
ENV jdk jdk1.8.0_221
ADD ./${java} /usr/local/java/
# 设置java环境
ENV JAVA_HOME /usr/local/java/${jdk}
ENV CLASSPATH $JAVA_HOME/lib;$JAVA_HOME/jre/lib
ENV PATH $PATH:$JAVA_HOME/bin
# 设置tomcat环境
ENV tomcat apache-tomcat-9.0.24.tar.gz
ENV tomcat_path apache-tomcat-9.0.24
ADD ${tomcat} /usr/local/tomcat/
ENV CATALINA_HOME /usr/local/tomcat/${tomcat_path}/
ENV CATALINA_BASE $CATALINA_HOME
ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露端口
EXPOSE 8080
# 启动容器的时候 启动tomcat
CMD ["catalina.sh", "run"]
3、创建并启动
docker-compose up -d
image
4、查看容器
docker-compose ps
image
5、测试连接数据库
image












网友评论