1 Star 0 Fork 0

zzhua/spring-boot-docker-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

[docker-compose部署服务]

如果不使用docker-compose

需要先启动mysql和redis容器,

然后打包jar应用为镜像,启动应用镜像为容器应用为镜像,启动应用镜像为容器

容器间的启停或宕机,有可能导致IP地址对应的容器实例变化,映射出错

如果使用docker-compose

1. 首先将代码中的配置文件的ip改为docker-compose.yaml中定义的服务名或容器名,即mysql和redis或redis01,因为服务名作为主机来访问

2. 构建jar应用镜像 docker build -t docker-compose-test:1.0 .

基础镜像使用java

FROM centos7-java8:1.0

作者

MAINTAINER zzhua

volume 指定临时文件为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp

VOLUME /tmp

将jar包添加到容器中并更名为 docker-compose-test.jar

ADD spring-boot-docker-demo.jar docker-compose-test.jar

运行jar包

RUN bash -c 'touch /docker-compose-test.jar' ENTRYPOINT ["java","-jar","/docker-compose-test.jar"]

暴露6001端口作为微服务

EXPOSE 6001

3. 编写docker-compose.yml,

注意:如果下面的内容直接复制到服务器上使用可能会报错

ERROR: .UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 27: invalid start byte,

删除中文注释即可

版本号

version: "3" services:

定义服务名称

microService: image: docker-compose-test:1.0 container_name: ms01 ports: - "6001:6001" volumes: - /app/microService:/data networks: - p_net depends_on: - redis - mysql redis: image: redis:6.0.8 container_name: redis01 ports: - "6379:6379" volumes: - /app/redis/conf/redis.conf:/etc/redis/redis.conf - /app/redis/data:/data networks: - p_net command: redis-server /etc/redis/redis.conf mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: '123456' MYSQL_ALLOW_EMPTY_PASSWORD: 'no' MYSQL_DATABASE: 'db2024' MYSQL_USER: 'zzhua' MYSQL_PASSWORD: '123456' ports: - "3306:3306" volumes: - /app/mysql/db:/var/lib/mysql - /app/mysql/conf/my.cnf:/etc/my.cnf - /app/mysql/init:/docker-entrypoint-initdb.d networks: - p_net networks: p_net:

4. 准备/app/redis/conf/redis.conf配置文件,而mysql也需要提前准备/app/mysql/conf/my.cnf配置文件

5. 镜像都准备好了,配置文件也准备好了,docker-compose.yml文件也准备好了

现在执行 docker-compose config -q 检查配置,有问题才输出

现在执行 docker-compose up -d 其中没有加container_name的会以当前文件夹名+镜像名+序号组成容器名称,

加了container_name的使用container_name作为容器名称

现在执行 docker-compose ps 查看由当前文件夹中的docker-compose.yml文件所构建的所有运行中的容器,包括启动失败退出的

可以执行 docker-compose logs 可以查看所有服务的启动日志

可以执行 docker-compose logs <服务名称> 可以查看指定服务的启动日志

可以执行 docker-compose logs -f <服务名称> 可以实时查看指定服务的启动日志

可以执行 docker-compose <服务名称> 可以查看指定服务的启动日志或启动错误日志

按照上面配置好并启动后,此时可以连接到mysql: 192.168.134.3 3306 root密码是123456,

连接成功发现db2024这个数据库已经创建好了,创建t_user表,并手动插入1条用户数据;

连接到redis:192.168.134.3 6379 连接成功;

访问服务 http://192.168.134.3:6001/users/1,返回插入的用户数据,查看redis缓存中也有了数据,这说明整个服务已经部署成功。

可以执行 docker network ls 可以看到创建了1个新的网络 p_net

在宿主机执行 docker network inspect p_net 查看"Containers"节点,发现正好有这3个容器

可以执行 docker-compose exec microService bash 进入ms01容器内部,

但是不能使用 docker-compose exec ms01 bash进入到容器内部,

可以使用docker exec -it ms01 bash 进入ms01容器内部

进入ms01容器的内部,执行ping redis01,ping mysql 发现都是能正常ping通的,这说明这3个容器在同一个网络中

可以执行 docker-compose pause <服务名称> 可以暂停指定的服务

可以执行 docker-compose down 关闭当前docker-compose.yml中定义的所有容器服务,此时docker ps -a 将查看不到任何容器,但是挂载的数据不会删除

空文件

简介

使用docker-compose部署服务,包括jar应用,redis服务,mysql服务 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zzhua195/spring-boot-docker-demo.git
git@gitee.com:zzhua195/spring-boot-docker-demo.git
zzhua195
spring-boot-docker-demo
spring-boot-docker-demo
master

搜索帮助