首先要使用docker- compose那么就要下载其可执行文件
下载地址:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
然后更改名字为docker-compose,接着移动到/usr/local/bin目录下
因为这是一个可执行文件所以要赋值可执行权限
chmod 777 docker-compose
然后配置一下环境变量即可在全局使用
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH
使用source使环境变量生效
这里我们创建一个同时拥有tomcat和mysql的compose,这样就可以同时管理两个容器,也可以单独通过docker命令管理
version: '3.1'
services:
mysql: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: mysql:5.7.24 # 指定镜像路径可以是网络路径
container_name: mysql # 指定容器名称:--name
ports:
- 3306:3306 # 指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: 123456 # 指定MySQL的ROOT用户登录密码
TZ: Asia/Shanghai # 指定时区
volumes:
- mysql_data:/var/lib/mysql # 映射数据卷
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- tomcat_webapps:/usr/local/tomcat/webapps
volumes:
tomcat_webapps:
external: false #这里表明上面的数据卷名叫tomca_webapps的数据卷本地没有创建,需要自动创建,如果已存在这个名称的数据卷想要使用那么需要设置为true 如果是本地文件夹映射则不需要配置这一条
mysql_data:
external: false
常用docker-compose命令
# 1. 基于docker-compose.yml启动管理的容器
docker-compose up -d
# 2. 关闭并删除容器
docker-compose down
# 3. 开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
# 4. 查看由docker-compose管理的容器
docker-compose ps
# 5. 查看日志
docker-compose logs -f
docker-compose结合Dockerfile
首先创建一个Dockerfile,里面的内容还是一样,创建一个tomcat镜像并复制项目到容器内
结合Dockerfile只需要在yml文件加上build语法即可
# yml文件
version: '3.1'
services:
ssm:
restart: always
build: # 构建自定义镜像
context: ./ # 指定dockerfile文件的所在路径
dockerfile: Dockerfile # 指定Dockerfile文件名称
image: ssm:1.0 #这里指定的就不是本地的容器而是我们想要生成的Dockerfile镜像的名称
container_name: ssm
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
这里要注意 使用yml生成的数据卷不会随着容器的删除而自动删除,所以下一次还会是这个容器的所有内容,可能会出现已经在yml中指定了新的mysql密码但是还是原来的密码这时候就要删除原来映射的数据卷重新运行docker-compose
要使用本地数据卷直接添加volumes即可 而要使用数据卷名的方式则需要指定数据卷是否已经存在
version: '3.1'
services:
mysql: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: mysql:5.7.24 # 指定镜像路径可以是网络路径
container_name: mysql # 指定容器名称:--name
ports:
- 3306:3306 # 指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: 123456 # 指定MySQL的ROOT用户登录密码
TZ: Asia/Shanghai # 指定时区
volumes:
- mysql_data:/var/lib/mysql # 映射数据卷
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes: #配置数据卷
- tomcat_webapps:/usr/local/tomcat/webapps
volumes:
tomcat_webapps:
external: false #这里指定tomca_webapps这个数据卷不存在,请自动创建一个新的
mysql_data:
external: false #这里也是一样