当前位置: 首页 > news >正文

重庆网站租赁空间昆明移动网站建设

重庆网站租赁空间,昆明移动网站建设,十大待遇最好央企,乐昌市建设网站目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) …目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) 查看Compose运行的容器 查看容器日志 关闭并删除Compose开启的容器 前提条件 熟悉Docker、Spring Boot 、Vue基本知识熟悉yaml文件基本知识可参考YAML 入门教程掌握Docker部署Spring Boot Vue项目方法可参考Docker部署Spring Boot Vue项目 概述 本文在普通的 Docker部署Spring Boot Vue项目 的基础上进行。部署若依前后端分离版项目为例重点在于如何使用Docker Compose的方式加快项目部署过程。 此前使用Docker部署一个Spring Boot Vue项目包含了4个容器 MySQL Redis Java后端 Nginx前端 而稍微复杂的项目还会有各种各样的其它中间件需要部署的容器远不止4个。如果还像之前那样手动的逐一部署就太麻烦了。 而Docker Compose就可以帮助我们实现 多个相互关联的Docker容器的快速部署。 Compose简介 Docker Compose 是一个用于定义和运行多容器应用程序的工具是实现精简且高效的开发与部署体验的关键所在。 它简化了对整个应用程序栈的控制能够通过一个易于理解的 YAML 配置文件轻松管理服务、网络和存储卷。然后只需一条命令就能依据配置文件创建并启动所有服务。 Docker Compose 可在所有环境中工作包括生产、预发布、开发、测试环境以及持续集成CI工作流程。它还具备用于管理应用程序整个生命周期的命令比如 启动、停止和重建服务。 查看正在运行服务的状态。 流式输出正在运行服务的日志内容。 在某个服务上运行一次性命令。 通过使用 Docker Compose使用一个名为 Compose 文件的 YAML 配置文件来配置应用程序的各项服务然后使用 Compose 命令行界面CLI依据该配置文件创建并启动所有服务。 Compose 文件即 compose.yaml 文件在定义多容器应用程序方面遵循了 Compose 规范所提供的规则。 Compose文件 Compose 文件的默认路径是位于工作目录下的 compose.yaml首选或 compose.yml。为了与早期版本兼容Compose 也支持 docker-compose.yaml 和 docker-compose.yml。如果这两种文件都存在Compose 会优先使用规范的 compose.yaml 文件。 你可以使用片段和扩展来保持 Compose 文件的高效性和易于维护性。 多个 Compose 文件可以合并在一起以定义应用程序模型。YAML 文件的组合是通过根据你设置的 Compose 文件顺序来追加或覆盖 YAML 元素来实现的。简单属性和映射会被最高顺序的 Compose 文件覆盖列表则通过追加来合并。当要合并的互补文件存放在其他文件夹时相对路径会基于第一个 Compose 文件的父文件夹来解析。由于一些 Compose 文件元素既可以表示为单个字符串也可以表示为复杂对象所以合并操作适用于展开形式。 如果想复用其他 Compose 文件或者将应用程序模型的部分内容提取到单独的 Compose 文件中也可以使用 “include”。如果你的 Compose 应用程序依赖于由不同团队管理的另一个应用程序或者需要与他人共享这将非常有用。 Compose环境 安装docker时已经附带安装了docker-compose-plugin插件所以无需另外安装docker compose 使用如下命令查询compose版本看到版本号说明docker compose正常可用 [rootlocalhost ~]# docker compose version Docker Compose version v2.29.7 ​ Compose命令 通过 “docker compose” 命令及其子命令与 Docker Compose 应用程序进行交互。可以管理在 compose.yaml 文件中定义的多容器应用程序的生命周期。这些命令能够轻松地启动、停止和配置应用程序。 帮助命令 docker compose帮助命令 [rootlocalhost ~]# docker compose --help ​ Usage: docker compose [OPTIONS] COMMAND ​ Define and run multi-container applications with Docker ​ Options:--all-resources             Include all resources, even those not used by services--ansi string               Control when to print ANSI control characters (never|always|auto) (default auto)--compatibility             Run compose in backward compatibility mode--dry-run                   Execute command in dry run mode--env-file stringArray       Specify an alternate environment file-f, --file stringArray           Compose configuration files--parallel int               Control max parallelism, -1 for unlimited (default -1)--profile stringArray       Specify a profile to enable--progress string           Set type of progress output (auto, tty, plain, json, quiet) (default auto)--project-directory string   Specify an alternate working directory(default: the path of the, first specified, Compose file)-p, --project-name string       Project name ​ Commands:attach     Attach local standard input, output, and error streams to a services running containerbuild       Build or rebuild servicesconfig     Parse, resolve and render compose file in canonical formatcp         Copy files/folders between a service container and the local filesystemcreate     Creates containers for a servicedown       Stop and remove containers, networksevents     Receive real time events from containersexec       Execute a command in a running containerimages     List images used by the created containerskill       Force stop service containerslogs       View output from containersls         List running compose projectspause       Pause servicesport       Print the public port for a port bindingps         List containerspull       Pull service imagespush       Push service imagesrestart     Restart service containersrm         Removes stopped service containersrun         Run a one-off command on a servicescale       Scale services start       Start servicesstats       Display a live stream of container(s) resource usage statisticsstop       Stop servicestop         Display the running processesunpause     Unpause servicesup         Create and start containersversion     Show the Docker Compose version informationwait       Block until containers of all (or specified) services stop.watch       Watch build context for service and rebuild/refresh containers when files are updated ​ Run docker compose COMMAND --help for more information on a command. ​ 查看某个命令的帮助例如docker compose up命令帮助如下 [rootlocalhost ~]# docker compose up --help ​ Usage: docker compose up [OPTIONS] [SERVICE...] ​ Create and start containers ​ Options:--abort-on-container-exit     Stops all containers if any container was stopped. Incompatible with -d--abort-on-container-failure   Stops all containers if any container exited with failure. Incompatible with -d--always-recreate-deps         Recreate dependent containers. Incompatible with --no-recreate.--attach stringArray           Restrict attaching to the specified services. Incompatible with --attach-dependencies.--attach-dependencies         Automatically attach to log output of dependent services--build                       Build images before starting containers-d, --detach                       Detached mode: Run containers in the background--dry-run                     Execute command in dry run mode--exit-code-from string       Return the exit code of the selected service container. Implies --abort-on-container-exit--force-recreate               Recreate containers even if their configuration and image havent changed--menu                         Enable interactive shortcuts when running attached. Incompatible with --detach. Canalso be enable/disable by setting COMPOSE_MENU environment var.--no-attach stringArray       Do not attach (stream logs) to the specified services--no-build                     Dont build an image, even if its policy--no-color                     Produce monochrome output--no-deps                     Dont start linked services--no-log-prefix               Dont print prefix in logs--no-recreate                 If containers already exist, dont recreate them. Incompatible with --force-recreate.--no-start                     Dont start the services after creating them--pull string                 Pull image before running (always|missing|never) (default policy)--quiet-pull                   Pull without printing progress information--remove-orphans               Remove containers for services not defined in the Compose file-V, --renew-anon-volumes           Recreate anonymous volumes instead of retrieving data from the previous containers--scale scale                 Scale SERVICE to NUM instances. Overrides the scale setting in the Compose file ifpresent.-t, --timeout int                 Use this timeout in seconds for container shutdown when attached or when containersare already running--timestamps                   Show timestamps--wait                         Wait for services to be running|healthy. Implies detached mode.--wait-timeout int             Maximum duration to wait for the project to be running|healthy-w, --watch                       Watch source code and rebuild/refresh containers when files are updated. ​ 关键命令 启动在 compose.yaml 文件中定义的所有容器服务 docker compose up 停止并移除正在运行的容器服务 docker compose down 监控正在运行的容器的输出并调试问题通过以下命令查看日志 docker compose logs 列出所有容器服务及其当前状态 docker compose ps Compose部署项目 此前docker命令一个一个容器手动部署步骤如下 # 1.创建网络 [rootlocalhost ~]# docker network create rynet ​ # 2.启动mysql容器 docker run -d -p 3306:3306 \ -v /app/myconf:/etc/mysql/conf.d \ -v /app/mydata:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDpassword \ --network rynet \ --name mysqldb \ mysql:8.0.39-debian ​ # 3.运行sql文件得到初始数据 ​ # 4.运行redis容器 docker run -d -p 6379:6379 \ --name myredis \ -v /app/redis/conf:/usr/local/etc/redis \ -v /app/redis/data:/data \ --network rynet \ redis ​ # 5.构建后端镜像 # 5.1Dockerfile内容 FROM openjdk:8 LABEL authorliang COPY ruoyi-admin.jar /ruoyi-admin.jar EXPOSE 8080 ENTRYPOINT [java,-jar,/ruoyi-admin.jar] ​ # 5.2构建镜像 [rootlocalhost ruoyi]# docker build -t ruoyiadmin:v1 . ​ # 6.运行后端容器 docker run -d -p 8080:8080 \ --name backend \ --network rynet \ -v /app/admindata/uploadPath:/ruoyi/uploadPath \ ruoyiadmin:v1 ​ # 7.运行前端容器 docker run -d -p 80:80 \ -v /root/dist:/usr/share/nginx/html \ -v ryngconf:/etc/nginx \ --name rynginx \ --network rynet \ nginx ​ 下面把这些步骤统一写在一个 compose.yaml文件中然后使用一条命令启动这些容器避免手动一步一步运行各个容器的麻烦简化部署流程。compose.yaml内容还可进一步优化本文后面会提供优化后的yaml内容如下 services:mysql:image: mysqlcontainer_name: mysqldbports:- 3306:3306environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: passwordvolumes:- /app/compose/mysql/myconf:/etc/mysql/conf.d- /app/compose/mysql/mydata:/var/lib/mysql- /app/compose/mysql/myinit:/docker-entrypoint-initdb.d # 初始化sql文件所在目录绑定挂载networks:- rynetredis:image: rediscontainer_name: myredisvolumes:- /app/compose/redis/conf:/usr/local/etc/redis- /app/compose/redis/data:/datanetworks:- rynetjavabackend:build: context: ./ruoyidockerfile: Dockerfilecontainer_name: backendimage: ruoyiadmin:v2 # 指定镜像名ports:- 8080:8080 # 暴露端口volumes:- /app/admindata/uploadPath:/ruoyi/uploadPath # 上传目录绑定挂载networks:- rynetdepends_on:- mysql- redisnginx:image: nginxcontainer_name: nginxports:- 80:80volumes:- /root/nginx.conf:/etc/nginx/nginx.conf # 绑定挂载配置文件提前准备- /root/dist:/usr/share/nginx/htmldepends_on:- javabackendnetworks:- rynet networks:rynet: 看到compose.yaml文件定义了4个容器。读者可自行对比compose文件定义的容器和docker run命令运行容器的对应关系。 初始化环境 # 删除容器 [rootlocalhost ~]# docker rm -f $(docker ps -qa) fcb5469c0776 88c2f4a4496f 74eeb57c4038 08776c3691f7 3655375bda89 ce27bf664148 2f92612fd555 f16e0185235f 5d0a2242ac54 [rootlocalhost ~]# docker ps CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES [rootlocalhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES ​ # 删除未使用的网络 [rootlocalhost ~]# docker network prune ​ # 删除相关镜像 [rootlocalhost ~]# docker images REPOSITORY           TAG             IMAGE ID       CREATED         SIZE ruoyiadmin           v1             6de9305df65c   2 hours ago     610MB ruoyifront           v1             35c81e6d0f0b   25 hours ago   194MB test/mychangenginx   v1             16689c99df42   3 days ago     188MB ubuntu               latest         b1e9cef3f297   5 weeks ago     78.1MB nginx               latest         39286ab8a5e1   6 weeks ago     188MB redis               latest         7e49ed81b42b   2 months ago   117MB mysql               latest         c757d623b190   2 months ago   586MB mysql               8.0.39-debian   3c716403fbe7   2 months ago   611MB hello-world         latest         d2c94e258dcb   17 months ago   13.3kB ​ [rootlocalhost ~]# docker rmi 6de 35c 166 ​ [rootlocalhost ~]# docker images REPOSITORY   TAG             IMAGE ID       CREATED         SIZE ubuntu       latest         b1e9cef3f297   5 weeks ago     78.1MB nginx         latest         39286ab8a5e1   6 weeks ago     188MB redis         latest         7e49ed81b42b   2 months ago   117MB mysql         latest         c757d623b190   2 months ago   586MB mysql         8.0.39-debian   3c716403fbe7   2 months ago   611MB hello-world   latest         d2c94e258dcb   17 months ago   13.3kB ​ ​ 查看代码文件 在完成  Docker部署Spring Boot Vue项目 后就会有前后端的代码文件通过如下命令查看代码文件确保如下这些文件存在。 # 查看代码文件 [rootlocalhost ~]# ls ruoyi    dist   ...# 查看前端文件 [rootlocalhost ~]# ls dist favicon.ico  html  index.html  index.html.gz  robots.txt  static# 查看到后端文件 [rootlocalhost ~]# ls ruoyi Dockerfile  ruoyi-admin.jarsql数据准备 将mysql数据初始化文件 ry_20240629.sql上传到指定目录例如/app/compose/mysql/myinit/ [rootlocalhost ~]# mkdir -p /app/compose/mysql/myinit [rootlocalhost ~]# ls /app/compose/mysql/myinit/ ry_20240629.sql nginx配置文件准备 [rootlocalhost ~]# vi nginx.conf nginx.conf内容如下 user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;try_files $uri $uri/ /index.html;index index.html index.htm;}location /prod-api/{proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://backend:8080/;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}} }1.location / {里面的root 配置前端代码文件所在的目录 2.location /prod-api/{里面配置了前端请求带有/prod-api/开头的路径将请求转发到对应的后端地址这里配置的后端服务地址为http://backend:8080/例如localhost:80/prod-api/getAllUser请求转发到http://backend:8080/getAllUser 创建 compose.yaml [rootlocalhost ~]# vi compose.yaml ​优化后的compose.yaml文件内容如下 services:mysqldb:image: mysql:8.0.39-debiancontainer_name: mysqldbports:- 3306:3306environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: passwordMYSQL_DATABASE: ryvueLANG: C.UTF-8command:--character-set-serverutf8mb4--collation-serverutf8mb4_general_civolumes:- /app/compose/mysql/myconf:/etc/mysql/conf.d- /app/compose/mysql/mydata:/var/lib/mysql- /app/compose/mysql/myinit:/docker-entrypoint-initdb.d # 绑定挂载初始化sql文件所在目录networks:- rynetmyredis:image: rediscontainer_name: myredisvolumes:- /app/compose/redis/conf:/usr/local/etc/redis- /app/compose/redis/data:/datanetworks:- rynetbackend:build: context: ./ruoyidockerfile: Dockerfilecontainer_name: backendimage: ruoyiadmin:v2 # 指定镜像名ports:- 8080:8080volumes:- /app/admindata/uploadPath:/ruoyi/uploadPath # 绑定挂载上传目录networks:- rynetrestart: alwaysdepends_on:mysqldb: condition: service_startedmyredis:condition: service_startednginx:image: nginxcontainer_name: nginxports:- 80:80volumes:- /root/nginx.conf:/etc/nginx/nginx.conf # 绑定挂载nginx配置文件提前准备- /root/dist:/usr/share/nginx/html # 绑定挂载前端代码目录depends_on:- backendnetworks:- rynet networks:rynet:一键启动compose多个容器 [rootlocalhost ~]# docker compose up -d [] Running 1/1! backend Warning Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting fo...               139.6s [] Building 0.1s (8/8) FINISHED                                                                                 docker:default [backend internal] load build definition from Dockerfile                                                               0.0s transferring dockerfile: 169B                                                                                       0.0s [backend internal] load metadata for docker.io/library/openjdk:8                                                       0.0s [backend internal] load .dockerignore                                                                                 0.0s transferring context: 2B                                                                                           0.0s [backend internal] load build context                                                                                 0.0s transferring context: 39B                                                                                           0.0s [backend 1/2] FROM docker.io/library/openjdk:8                                                                         0.0s CACHED [backend 2/2] COPY ruoyi-admin.jar /ruoyi-admin.jar                                                             0.0s [backend] exporting to image                                                                                           0.0s exporting layers                                                                                                   0.0s writing image sha256:83e99924b0730b778deafc3783a049a240783ee9658f2c096f151d55b12bb6bc                               0.0s naming to docker.io/library/ruoyiadmin:v2                                                                           0.0s [backend] resolving provenance for metadata file                                                                       0.0s [] Running 5/5✔ Network root_rynet Created                                                                                             0.1s ✔ Container myredis   Started                                                                                             0.6s ✔ Container mysqldb   Started                                                                                             0.6s ✔ Container backend   Started                                                                                             0.9s ✔ Container nginx     Started                                                                                             1.2s [rootlocalhost ~]# ​ 浏览器访问虚拟机ip:80(可省略默认的80端口) 虚拟机ip 输入验证码后进入用户管理看到如下界面 查看Compose运行的容器 [rootlocalhost ~]# docker compose ps NAME      IMAGE                 COMMAND                  SERVICE   CREATED          STATUS         PORTS backend   ruoyiadmin:v2         java -jar /ruoyi-ad…   backend   10 seconds ago   Up 8 seconds   0.0.0.0:8080-8080/tcp, :::8080-8080/tcp myredis   redis                 docker-entrypoint.s…   myredis   10 seconds ago   Up 9 seconds   6379/tcp mysqldb   mysql:8.0.39-debian   docker-entrypoint.s…   mysqldb   10 seconds ago   Up 9 seconds   0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp nginx     nginx                 /docker-entrypoint.…   nginx     9 seconds ago    Up 8 seconds   0.0.0.0:80-80/tcp, :::80-80/tcp查看容器日志 使用如下命令查看容器日志 [rootlocalhost ~]# docker compose logs ... 省略日志输出 ... 看到输出了Compose中多个容器的日志。 关闭并删除Compose开启的容器 关闭并删除Compose开启的容器 [rootlocalhost ~]# docker compose down [] Running 5/5? Container nginx     Removed                                                                                             0.3s ? Container backend   Removed                                                                                             0.4s ? Container mysqldb   Removed                                                                                             0.6s ? Container myredis   Removed                                                                                             0.2s ? Network root_rynet Removed                                                                                             0.1s [rootlocalhost ~]# ​ 再次查看容器 [rootlocalhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES完成enjoy it
http://www.hkea.cn/news/14348907/

相关文章:

  • 怎么查网站备案信息北京社保网站做社保增减员
  • 建设局网站安徽本地的天津网站建设
  • 网站服务器搭建及配置的具体步骤石家庄电商网站开发
  • 如何使用二级域名做网站四川盼之网络科技官网
  • 做彩票网站代理综合门户型网站有哪些
  • 手机网站建设多少钱一个网站建设的展望 视频
  • 人是用什么做的视频网站指数函数公式
  • 悦阁网站建设去除wordpress活动及新闻
  • 鹿城做网站jsp网站开发的环境配置
  • 十年前网站开发语言wordpress自定义文章添加标签
  • 在线生成个人网站源码查询企业年报的网站
  • 网站改版收费网站建设公司伟置
  • 手机网站做分享到朋友圈天津市建设交易中心网站
  • 建设银行投诉网站首页北京建设主管部门官方网站
  • 山东锦华建设集团有限公司网站男和男人怎么做那个视频网站
  • win7搭建网站服务器php钓鱼网站怎么做视频教程
  • 网站懒加载怎么做苏州建设监督网站
  • 黄岛开发区做网站网络公司网站服务器基本要素有哪些
  • 网站和系统的区别南阳网站seo公司
  • 高端大气的网站制作如何给网站配色
  • 网站建设需要做哪些工作oa信息管理系统
  • 微信公众号平台及网站建设计划京东网站是自己做的吗
  • 周口网站设计制作北京建工集团有限公司官网
  • 学做网站要学哪些wordpress实现说说
  • 社交网站开发难度公司域名是什么意思
  • 攀枝花做网站百度搜索引擎seo
  • 家装设计师网站单页面网站怎么做seo
  • 网站 刷流量短视频运营培训学校
  • 佛山做网站建设公司如何选择网站公司
  • 郑州网站优化seo怎么做游戏推广赚钱