首页 > 其他分享 >docker-compose 一键部署

docker-compose 一键部署

时间:2023-12-15 15:23:09浏览次数:33  
标签:compose 0.0 hmall 一键 nginx mysql docker

3.3.DockerCompose

大家可以看到,我们部署一个简单的java项目,其中包含3个容器:
  • MySQL
  • Nginx
  • Java项目
而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止3个。如果还像之前那样手动的逐一部署,就太麻烦了。   而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。  

3.3.1.基本语法

docker-compose.yml文件的基本语法可以参考官方文档: https://docs.docker.com/compose/compose-file/compose-file-v3/   docker-compose文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于service就是在定义某个应用的运行时参数,因此与docker run参数非常相似。 举例来说,用docker run部署MySQL的命令如下:
docker run -d \
        --name mysql \
        -p 3306:3306 \
        -e TZ=Asia/Shanghai \
        -e MYSQL_ROOT_PASSWORD=123 \
        -v ./mysql/data:/var/lib/mysql \
        -v ./mysql/conf:/etc/mysql/conf.d \
        -v ./mysql/init:/docker-entrypoint-initdb.d \
        --network hmall
        mysql
如果用docker-compose.yml文件来定义,就是这样:
version: "3.8"

        services:
        mysql:
        image: mysql
        container_name: mysql
        ports:
        - "3306:3306"
        environment:
        TZ: Asia/Shanghai
        MYSQL_ROOT_PASSWORD: 123
        volumes:
        - "./mysql/conf:/etc/mysql/conf.d"
        - "./mysql/data:/var/lib/mysql"
        networks:
        - new
        networks:
        new:
        name: hmall
对比如下:
docker run 参数 docker compose 指令 说明
--name container_name 容器名称
-p ports 端口映射
-e environment 环境变量
-v volumes 数据卷配置
--network networks 网络
  明白了其中的对应关系,相信编写docker-compose文件应该难不倒大家。   黑马商城部署文件:
version: "3.8"

        services:
        mysql:
        image: mysql
        container_name: mysql
        ports:
        - "3306:3306"
        environment:
        TZ: Asia/Shanghai
        MYSQL_ROOT_PASSWORD: 123
        volumes:
        - "./mysql/conf:/etc/mysql/conf.d"
        - "./mysql/data:/var/lib/mysql"
        - "./mysql/init:/docker-entrypoint-initdb.d"
        networks:
        - hm-net
        hmall:
        build:
        context: .
        dockerfile: Dockerfile
        container_name: hmall
        ports:
        - "8080:8080"
        networks:
        - hm-net
        depends_on:
        - mysql
        nginx:
        image: nginx
        container_name: nginx
        ports:
        - "18080:18080"
        - "18081:18081"
        volumes:
        - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
        - "./nginx/html:/usr/share/nginx/html"
        depends_on:
        - hmall
        networks:
        - hm-net
        networks:
        hm-net:
        name: hmall

3.3.2.基础命令

编写好docker-compose.yml文件,就可以部署项目了。常见的命令: https://docs.docker.com/compose/reference/   基本语法如下:
docker compose [OPTIONS] [COMMAND]
其中,OPTIONS和COMMAND都是可选参数,比较常见的有:
类型 参数或指令 说明
Options -f 指定compose文件的路径和名称
-p 指定project名称。project就是当前compose文件中设置的多个service的集合,是逻辑概念
Commands   up 创建并启动所有service容器
down 停止并移除所有容器、网络
ps 列出所有启动的容器
logs 查看指定容器的日志
stop 停止容器
start 启动容器
restart 重启容器
top 查看运行的进程
exec 在指定的运行中容器中执行命令
  教学演示:
# 1.进入root目录
        cd /root

        # 2.删除旧容器
        docker rm -f $(docker ps -qa)

        # 3.删除hmall镜像
        docker rmi hmall

        # 4.清空MySQL数据
        rm -rf mysql/data

        # 5.启动所有, -d 参数是后台启动
        docker compose up -d
        # 结果:
        [+] Building 15.5s (8/8) FINISHED
        => [internal] load build definition from Dockerfile                                    0.0s
        => => transferring dockerfile: 358B                                                    0.0s
        => [internal] load .dockerignore                                                       0.0s
        => => transferring context: 2B                                                         0.0s
        => [internal] load metadata for docker.io/library/openjdk:11.0-jre-buster             15.4s
        => [1/3] FROM docker.io/library/openjdk:11.0-jre-buster@sha256:3546a17e6fb4ff4fa681c3  0.0s
        => [internal] load build context                                                       0.0s
        => => transferring context: 98B                                                        0.0s
        => CACHED [2/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo   0.0s
        => CACHED [3/3] COPY hm-service.jar /app.jar                                           0.0s
        => exporting to image                                                                  0.0s
        => => exporting layers                                                                 0.0s
        => => writing image sha256:32eebee16acde22550232f2eb80c69d2ce813ed099640e4cfed2193f71  0.0s
        => => naming to docker.io/library/root-hmall                                           0.0s
        [+] Running 4/4
        ✔ Network hmall    Created                                                             0.2s
        ✔ Container mysql  Started                                                             0.5s
        ✔ Container hmall  Started                                                             0.9s
        ✔ Container nginx  Started                                                             1.5s

        # 6.查看镜像
        docker compose images
        # 结果
        CONTAINER           REPOSITORY          TAG                 IMAGE ID            SIZE
        hmall               root-hmall          latest              32eebee16acd        362MB
        mysql               mysql               latest              3218b38490ce        516MB
        nginx               nginx               latest              605c77e624dd        141MB

        # 7.查看容器
        docker compose ps
        # 结果
        NAME                IMAGE               COMMAND                  SERVICE             CREATED             STATUS              PORTS
        hmall               root-hmall          "java -jar /app.jar"     hmall               54 seconds ago      Up 52 seconds       0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
        mysql               mysql               "docker-entrypoint.s…"   mysql               54 seconds ago      Up 53 seconds       0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
        nginx               nginx               "/docker-entrypoint.…"   nginx               54 seconds ago      Up 52 seconds       80/tcp, 0.0.0.0:18080-18081->18080-18081/tcp, :::18080-18081->18080-18081/tcp
打开浏览器,访问:http://yourIp:8080

标签:compose,0.0,hmall,一键,nginx,mysql,docker
From: https://www.cnblogs.com/lin513/p/17903433.html

相关文章

  • docker安装oracle
    下载或者加载镜像dockerload<oracle11g.tar创建临时容器dockerrun--nameoracle_temp-p1500:1521--privileged=true-dregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latestmkdir-p/home/data/oracle/oradatadockercporacle_temp:/home/oracle/app/or......
  • 智能养号新玩法:探秘亚马逊鲲鹏系统的AI一键养号
    在亚马逊这个庞大的电商平台上,刚注册的买家号往往需要经过一段时间的“磨合”才能正式进行下单。为了提高账号的活跃度,亚马逊鲲鹏系统推出了一款颠覆性的AI智能一键养号工具,让养号变得更加轻松便捷。对于刚注册的买家号而言,直接进行下单可能会引起系统的敏感性,因此建议先进行一段时......
  • docker -部署项目-后端
    3.1.部署Java项目hmall项目是一个maven聚合项目,使用IDEA打开hmall项目,查看项目结构如图:我们要部署的就是其中的hm-service,其中的配置文件采用了多环境的方式:其中的application-dev.yaml是部署到开发环境的配置,application-local.yaml是本地运行时的配置。 查看applicatio......
  • docker-项目部署-前端
    3.2.部署前端hmall-portal和hmall-admin是前端代码,需要基于nginx部署。在课前资料中已经给大家提供了nginx的部署目录:其中:html是静态资源目录,我们需要把hmall-portal以及hmall-admin都复制进去nginx.conf是nginx的配置文件,主要是完成对html下的两个静态资源目录做代理......
  • docker-基础常见命令
    2.1.常见命令首先我们来学习Docker中的常见命令,可以参考官方文档:https://docs.docker.com/engine/reference/commandline/cli/ 2.1.1.命令介绍其中,比较常见的命令有:命令说明文档地址dockerpull拉取镜像dockerpulldockerpush推送镜像到......
  • Docker架构
    原文:https://blog.csdn.net/qq_46921028/article/details/129096134Docker是一个CS架构的程序,由两部分组成:服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等。客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。 ......
  • Cassandra 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署Cassandra#vimdocker-compose.ymlversion:'3'services:cassandra:image:cassandra:l......
  • 大模型那么火,教你一键ModelArts玩转开源LlaMA大模型
     本文分享自华为云社区《大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型》,作者:码上开花_Lancer。近日,LlaMA(羊驼)这个大模型再次冲上热搜!LLaMA(LargeLanguageModelMetaAI),由MetaAI发布的一个开放且高效的大型基础语言模型,共有7B、13B、33B、65B(650亿)四种版本。......
  • 启动Docker服务报错
    启动Docker服务报错如下Jobfordocker.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusdocker.service"and"journalctl-xe"fordetails.使用命令journalctl-xe查看解决方法一、关闭防火墙或者selinux1、关闭防火墙system......
  • Docker查看容器的启动命令
    安装第三方包:get_command_4_run_containerdockerpullcucker/get_command_4_run_container执行命令:dockerrun--rm-v/var/run/docker.sock:/var/run/docker.sockcucker/get_command_4_run_container[容器名称]/[容器ID]可以将其封装为一个别名echo"aliasget_run_comm......