安装docker compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
授权
chmod +x /usr/local/bin/docker-compose
创建docker-compose.yml(Encoding=utf-8,format=unix)
如:/docker_data/springboot/docker-compose.yml
version: "3"
services:
#项目名称
fu:
#镜像名称:版本号
image: fu:1
#Docker容器重启时,当前容器也会自动重启
restart: always
#容器名称
container_name: fu
#容器映射到宿主机端口
ports:
- "10086:10086"
#数据映射
volumes:
- /docker_data/springboot/logs:/logs/
- /docker_data/springboot/application.yml:/application.yml
#启动依赖项
depends_on:
- redis
- mysql
redis:
image: redis:6.2.6
container_name: redis-6.2.6
ports:
- "6379:6379"
#前提是你linux环境下面的/docker_data/redis文件夹内有redis.conf配置文件、data文件夹,没有的要先cp镜像文件
#docker cp redis6.2.6的镜像ID:/etc/redis/redis.conf /docker_data/redis/redis.conf
volumes:
- /docker_data/redis/redis.conf:/etc/redis/redis.conf
- /docker_data/redis/data:/data
#使用容器的配置文件,由于我们配置了-v,因此会拿宿主机的配置文件
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:8.0.23
container_name: mysql-8.0.23
#环境变量等效于ENV
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
#初始化的时候会创建fu这个数据库
MYSQL_DATABASE: 'fu'
ports:
- "3306:3306"
volumes:
- /docker_data/mysql/data:/var/lib/mysql
- /docker_data/mysql/log:/var/log/mysql
- /docker_data/mysql/conf:/etc/mysql/conf.d
#解决外部无法访问的问题
command: --default-authentication-plugin=mysql_native_password
把springboot项目打成jar包放到Linux服务器,并创建Dockerfile,如:/docker_data/springboot/fu.jar
Dockerfile内内如下
#基础镜像使用
FROM openjdk:8-jre-alpine
#作者
MAINTAINER Meta39
#指定临时文件目录为tmp。在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
#将jar包添加到容器中并更改为相应的名称
ADD fu.jar fu.jar
#运行jar包
ENTRYPOINT ["nohup","java","-jar","/fu.jar","&"]
#暴露端口
EXPOSE 10086
把jar做成image镜像文件
docker build -t fu:1 .
查看构建的镜像
docker images
如下所示:
REPOSITORY TAG IMAGE ID CREATED SIZE
fu 1 a2d112b8af2b 32 seconds ago 732MB
运行docker-compose按redis、mysql、springboot顺序启动
docker-compose -f /docker_data/springboot/docker-compose.yml up -d
如下所示则表示启动成功:
Starting mysql-8.0.23 ... done
Starting redis-6.2.6 ... done
Starting fu ... done
停止docker compose
docker-compose stop