通过这几行配置,我们就拥有了一个mysql服务 。并且其他服务可以通过192.168.30.11:3306访问到这个服务 。
【使用Docker来编排Web应用】我们再来定义Java服务和nginx服务 , 以我的chat-system-server为例,在打包Java服务时,将数据库的地址指向我们刚才的mysql服务即可 。

文章插图
图片
chat-system-server:image: tomcat:9.0.41-jdk8-openjdkcontainer_name: chat_system_serverports:- 8080:8080volumes:- /Users/likai/Documents/docker_tomcat/webapps:/usr/local/tomcat/webapps- /Users/likai/Documents/chat-system-server-data:/usr/local/data- /Users/likai/Documents/docker_tomcat/conf/:/usr/local/tomcat/confenvironment:- TZ=Asia/Shanghainetworks:kaisir-docker-network:ipv4_address: 192.168.30.12nginx-server:image: nginx:1.18.0container_name: local_nginxports:- 80:80- 443:443volumes:- /Users/likai/Documents/nginx_config:/etc/nginx- /Users/likai/Documents/nginx_data:/usr/share/nginx/dataenvironment:- TZ=Asia/Shanghainetworks:- kaisir-docker-networkdepends_on:- redis- mysql- chat-system-server- kodbox- halo同样的,其他的服务也通过这种格式进行定义即可 。上面的配置中 , 我还定义了redis、kodbox、halo这三个服务 。- kodbox 是我之前搭建的网盘服务[15],依赖php环境
- halo 是我的个人网站[16],依赖Java15环境
??注意:上面的配置文件中 , 本地路径是写死在配置文件中的,实际在使用的时候一般会通过变量的形式注入一个路径前缀进来 , 如下所示:
- 如果 MY_VOLUME_PATH 环境变量存在并且非空,则使用它的值
- 否则,使用默认值 /default/path
启动服务最后 , 我们在终端通过docker-compose up命令即可启动我们定义好的所有服务 。因为我们映射了本地的8080端口为chat_system_server的服务,我们在postman内通过127.0.0.1:8080即可访问到这个容器所提供的服务了 。
docker-compose up
文章插图
图片

文章插图
图片
在nginx的配置文件中我也暴露了80端口出来,指向了halo服务,在浏览器中直接访问127.0.0.1就能看到服务所提供的内容了 。

文章插图
图片
image-20231115222119946
??注意:如果你的配置文件中定义了路径变量则需要在启动时传入这个变量,如下所示:
MY_VOLUME_PATH=/path/to/your/volume docker-compose up
踩坑记录我在配置mysql服务时,走了很多弯路 , 不知道哪步搞错了,启动服务后会报错find: '/var/lib/mysql/mysql.sock': No such file or directory,导致启动失败,我尝试过删除容器、删除镜像,清空主机映射的目录文件,都解决不了 。
最后,发现是权限原因,在 docker-compose.yml文件中,给mysql服务添加下述配置即可解决 。问题解决后,再把这些去掉即可 。
command:- /bin/bash- -c- |chmod +rw /var/lib/mysqlmysqld参考资料[1]Docker: https://yeasy.gitbook.io/docker_practice/install[2]docker-compose: https://yeasy.gitbook.io/docker_practice/compose/install
[3]编排容器: ##编排容器
[4]Union FS: https://en.wikipedia.org/wiki/Union_mount
[5]Docker Registry: https://docs.docker.com/registry/
[6]Docker Hub: https://hub.docker.com/
[7]Quay.io: https://quay.io/repository/
[8]Google Container Registry: https://cloud.google.com/container-registry/
[9]Docker Registry: https://hub.docker.com/_/registry/
[10]Docker Registry API: https://docs.docker.com/registry/spec/api/
[11]Harbor: https://Github.com/goharbor/harbor
[12]Dockerfile 指令详解: https://yeasy.gitbook.io/docker_practice/image/dockerfile
[13]新建并启动一个容器: ###新建并启动
[14]新建并启动一个容器: ###新建并启动
[15]搭建的网盘服务: https://www.kaisir.cn/post/112
推荐阅读
- .NET Core下有热门的ORM框架使用方法
- CPU占用率高?解决方案全在这
- JDK11 升级 JDK17 最全实践干货来了
- 微信内存优化:释放大量空间,提升使用体验
- 手机充电到100%再拔?原来我们都做错了!
- 抖店商品卡怎么推广?怎么带来流量?
- 为什么steam商店加载不出来 steam商店加载不出来解决办法
- 修颜霜如何使用,修颜水粉霜BB霜怎么起到防晒作用
- 盐从哪里来的 盐从哪里来
- Lisa豪门梦碎后,妆造又黑又丑,参加疯马秀的报应来了?
