您现在的位置是:首页 >技术杂谈 >Docker服务编排(Docker Compose) :部署上线nginx+springboot项目网站首页技术杂谈

Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

Rkun18 2024-06-12 00:01:02
简介Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

Docker服务编排(Docker Compose)

  • 微服务应用一般包含若干个微服务每个微服务一般会部署多个实例,如果每个微服务需要手动启停

  • 维护工作量大

  • 从Dockerfile build image 或者去dockerhub拉去image

  • 创建多个容器

  • 管理容器
    在这里插入图片描述

Docker Compose

一个编排多容器分布式部署工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动,停止,使用步骤:

  • Dockerfile定义运行镜像

  • docker-compose.yml定义组成应用各服务

  • 运行docker-compose up 启动

Docker Compose安装使用

安装
[root@server-a ~]# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

设置文件可执行权限  
 chmod +x /usr/local/bin/docker-compose  


docker-compose -version
docker-compose version 1.22.0, build f46880fe

卸载

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

编排nginx+springboot项目

springboot项目创建

  • 首先创建一个springboot项目,使用IDEA的spring Initializr创建,创建一个Controller
@RestController
public class Controller {
    @RequestMapping("/hello")
    public String hello(){
        return "HELLO DOCKER";
    }
}
  • 启动项目,页面访问

    在这里插入图片描述

  • maven将项目打成jar包

  • 将jar包传入你选择的目录中去

[root@server-a ~]# mkdir docker-files
[root@server-a ~]# cd  docker-files
[root@server-a docker-files]# ls
[root@server-a docker-files]# ll
总用量 17152
-rw-r--r--. 1 root root 17561003 58 04:04 app-0.0.1-SNAPSHOT.jar
  • 定义父镜像 FROM java

  • 定义作者信息 MAINTAINER

  • 将jar包添加到容器 ADD

  • 定义容器启动时命令 CMD

     [root@server-a docker-files]# vim app-dockerfile
    [root@server-a docker-files]# cat app-dockerfile
    FROM java:8
    MAINTAINER rkun18
    ADD app-0.0.1-SNAPSHOT.jar app.jar
    CMD java -jar app.jar
    
docker build -f ./app-dockerfile -t app .

- 查看刚创建app镜像

```bash
     [root@server-a docker-files]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
app          latest    3d2ef669ba18   About a minute ago   661MB
nginx        latest    605c77e624dd   16 months ago        141MB
tomcat       latest    fb5657adc892   16 months ago        680MB
centos       7         eeb6ee3f44bd   19 months ago        204MB
java         latest    d23bdf5b1b1b   6 years ago          643MB
  • 使用镜像创建容器并启动,(注意这里如果容器创建了没启动可能是java版本过低,不适配)

    错误发生,查看容器日志

           docker logs <container_name_or_id>
    
[root@server-a docker-files]# docker run -id -p 9000:8080 --name=c1 app
e7dd2eb736a00a1797e8c494748dbbb9bb68523b5599ba86cea9877c91f479c8
[root@server-a docker-files]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                       NAMES
e7dd2eb736a0   app       "/bin/sh -c 'java -j…"   6 seconds ago   Up 5 seconds   0.0.0.0:9000->8080/tcp, :::9000->8080/tcp   c1
  • 测试访问宿主机ip:9000/hello

在这里插入图片描述

开始部署

  • 创建docker-compose目录
 [root@server-a ~]# mkdir ~/docker-compose
[root@server-a ~]# cd  ~/docker-compose
  • 编写 docker-compose.yml 文件
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d    #宿主机目录:容器目录
  app:
    image: app
    expose:
      - "8080"
  • 创建宿主机挂载目录,写入配置信息
[root@server-a docker-compose]# mkdir -p ./nginx/conf.d
[root@server-a docker-compose]# cd ./nginx/conf.d
[root@server-a conf.d]# vim usr.conf
[root@server-a conf.d]# cat usr.conf
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080
  • 切换目录,启动容器
[root@server-a ~]# cd docker-compose/
[root@server-a docker-compose]# docker-compose up

启动效果

在这里插入图片描述

  • 访问宿主机80端口,查看效果
    在这里插入图片描述

成功访问

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。