西安网站优化平台,微信小程序怎么做网页,站长网站查询工具,万远翔网站建设Docker-Compose是Docker官方的一个开源项目#xff0c;主要用于实现对Docker容器集群的快速编排和管理。该项目由Python编写#xff0c;通过调用Docker服务提供的API来管理容器。只要所操作的平台支持Docker API#xff0c;就可以利用Docker-Compose进行编排管理。Docker-Co…Docker-Compose是Docker官方的一个开源项目主要用于实现对Docker容器集群的快速编排和管理。该项目由Python编写通过调用Docker服务提供的API来管理容器。只要所操作的平台支持Docker API就可以利用Docker-Compose进行编排管理。Docker-Compose通过简化多容器应用的部署和管理使得开发人员能够更专注于应用程序的开发和测试。
部署SpringBoot
现在我们有一个springboot项目需要依赖Redis、mysql5.7、nginx。
如果使用docker原生部署的话则需要安装Redis、mysql5、nginx容器在才可以启动我们springboot项目这样的话部署项目的流程非常复杂所以需要引入我们的Docker compose实现容器编排技术。
1、在服务器上创建工作目录
工作目录是用于存放部署所需要的文件等(Dockerfile、jar包、配置文件、静态资源)我这里是在根目录下创建app文件夹里面内容如下 2、打包SpringBoot项目并上传到服务器
注意在SpringBoot项目中的yml文件中也需要一些小小的改动如下 3、编辑需要的Dockerfile文件
本项目一共需要3个分别是springboot的、nginx、以及mysql分别如下
3.1、Dockerfile-springboot
#镜像、容器的基础环境这里是JDK8
FROM kdvolder/jdk8
MAINTAINER zhangb#设置工作目录
WORKDIR /app# 将jar包复制到容器内注意在dockerfile中路径都是相对路径而不是绝对路径
COPY /projects/SmartCommunities-0.0.1-SNAPSHOT.jar /app/SmartCommunities-0.0.1-SNAPSHOT.jar # 向外暴露端口
EXPOSE 8383# 定义容器启动时执行的命令
ENTRYPOINT [java,-jar,/app/SmartCommunities-0.0.1-SNAPSHOT.jar]
3.2、Dockerfile-nginx
# 使用官方Nginx镜像作为基础
FROM nginx:latest
MAINTAINER zhangb# 复制自定义的Nginx配置文件
COPY /usr/local/nginx/conf/nginx.conf nginx.conf# 复制你的静态文件或其他资源如果有的话
COPY /usr/local/nginx/html /usr/share/nginx/html
对应的nginx配置文件 #user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main $remote_addr - $remote_user [$time_local] $request #access_log logs/access.log main;sendfile on;keepalive_timeout 65;server {listen 81;server_name localhost;charset utf-8;location / {root html;index index.html index.htm;} error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}#项目的静态资源以及后端代理server {listen 80;server_name smartcommunity;location /{root /usr/share/nginx/html;index index.html;}location /prod-api/{proxy_pass http://192.168.235.138:8383/;}}}nginx所需要的静态资源 存放在app下的html中
3.3、Dockerfile-mysql MAINTAINER zhangb#/docker-entrypoint-initdb.d/目录下的所有.sh、.sql、.sql.gz文件取决于具体的数据库镜像将在数据库初始化时被执行或导入。
#这意味着community-linux.sql中的SQL命令将在数据库容器首次启动时被执行从而初始化数据库
ADD ./db/communiyu01.sql /docker-entrypoint-initdb.d
4、核心docker-compose.yml文件
注意yml中的缩进全部都是空格来完成的如果有tab会报错
#Docker-compose的版本
version: 3.0 #编排的服务、容器有哪些
services: #mysql服务db:#定义容器名称这里就是之前springboot的yml配置文件中的container_name: db #所使用的mysql镜像image: mysql:8.0#通过dockerfile-mysql来构建build:context: ./dockerfile: Dockerfile-mysql#解决外部与内部连接的问题command: --default-authentication-pluginmysql_native_password#数据库的环境environment:#初始化mysql的密码MYSQL_ROOT_PASSWORD: 111111 MYSQL_DATABASE: community01MYSQL_PASSWORD: 111111ports: - 3306:3306 #使用的网络注意docker中容器的通信需要在同一网络下才能进行通信networks:- communityredis: image: redis:7.0container_name: redis ports: - 6379:6379 networks:- communityapp: build: context: . dockerfile: Dockerfile-springboot ports: - 8383:8383 depends_on: - db networks:- community nginx: build: context: . dockerfile: Dockerfile-nginx ports: - 83:80 depends_on: - appnetworks:- community#定义该项目下的容器所使用的网络
networks: #定义的网络名称community: #网络类型桥接模式driver: bridge
同时关于docker中的容器通信详看Docker容器间通信详解
5、构建并运行