代码编织梦想

这里仅讨论部署,不涉及开发
这里仅讨论部署,不涉及开发
这里仅讨论部署,不涉及开发

  • mysql

    # 拉取 mysql 镜像,随便选择即可
    docker pull mysql:8.0
    # 运行
    docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypasswd -v /data/mysql/data:/var/lib/mysql mysql:8.0
    # 确保将 eladmin 提供的 eladmin.sql 复制到当前文件夹后执行
    docker cp eladmin.sql mysql:/root/
    # 进入容器
    docker exec -it mysql sh
    cd /root/
    # mysql 新建数据库导入 eladmin
    mysql -uroot -p
    create database eladmin;
    use eladmin;
    source eladmin.sql;
    
  • redis

    # 拉取 redis 镜像,随便选择即可
    docker pull redis:6.2
    docker run -d --name redis -p 6379:6379 \
    -v /usr/docker/tlmall-redis/data:/data \
    -v /usr/docker/tlmall-redis/conf/redis.conf:/etc/redis.conf \
    redis:6.2
    
  • 前端

    • nginx.conf

      user  nginx;
      worker_processes  1;
      error_log  /var/log/nginx/error.log warn;
      pid        /var/run/nginx.pid;
      events {
        worker_connections  1024;
      }
      http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
        
      server
          {
              listen 80;
              server_name 192.168.0.1;
              index index.html;
              root  /app;  #dist上传的路径
      
              # 避免访问出现 404 错误
              location / {
                try_files $uri $uri/ @router;
                index  index.html;
              }
      
              location @router {
                rewrite ^.*$ /index.html last;
              }
      
              # 接口
              location /api {
                proxy_pass http://172.17.0.1:8000;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
              }
      
              # 授权接口
              location /auth {
                proxy_pass http://172.17.0.1:8000;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
              }
      
              # WebSocket 服务
              location /webSocket {
                proxy_redirect off;
                proxy_pass http://172.17.0.1:8000/webSocket;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 60s;
                proxy_read_timeout 86400s;
                proxy_send_timeout 60s;
              }
      
              # 头像
              location /avatar {
                proxy_pass http://172.17.0.1:8000;
              }
      
              # 文件
              location /file {
                proxy_pass http://172.17.0.1:8000;
              }
          }
      }
      

      server_name 192.168.0.1 此处改为本地地址

    • dockerfile

      FROM alpine:3.16.2
      
      WORKDIR /tmp
      
      RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
          && apk add --no-cache nodejs npm bash git \
          && npm config set registry https://registry.npm.taobao.org \
          && echo 'sass_binary_site=https://npm.taobao.org/mirrors/node-sass/' >> ~/.npmrc \
          && git clone --progress https://ghproxy.com/https://github.com/elunez/eladmin-web.git eladmin-web \
          && cd eladmin-web \
          && sed -e 's|https://eladmin.vip|http://192.168.0.1:8000|g' \
          		-e 's|wss://eladmin.vip|ws://192.168.0.1:8000|g' -i .env.production \
          && npm install \
      	&& cd /tmp/eladmin-web/ \
      	&& npm run build:prod
      
      
      FROM alpine:3.16.2
      
      RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
          && mkdir -p /app && apk add nginx bash
      
      COPY --from=0 /tmp/eladmin-web/dist /app
      COPY nginx.conf /etc/nginx/nginx.conf
      
      ENTRYPOINT ["nginx","-g","daemon off;"]
      

      其中192.168.0.1为实际部署的机器的ip,根据实际情况修改

    • 构建

      docker build -t vue:1.0 .
      # 当文件名不为 dockerfile 时,使用 -f 选项指定
      # 在构建阶段无法联网时,使用 --network host
      
    • 运行

      docker run --name vue -d -p 8080:80 vue:1.0
      
  • 后端

    • dockerfile

      注意!构建时需要编译打包好后端的jar包放在当前目录,也可以在dockerfile中拉取代码后编译,然后分阶段构建,这里不展开

      FROM openjdk:18
      ARG JAR_FILE=./*.jar
      COPY ${JAR_FILE} app.jar
      ENV TZ=Asia/Shanghai
      ENTRYPOINT ["java","-jar","/app.jar"]
      
    • 构建

      docker build -t app:1.0 .
      # 当文件名不为 dockerfile 时,使用 -f 选项指定
      # 在构建阶段无法联网时,可以直接先拉取基础镜像 docker pull openjdk:18
      
    • 运行

      docker run -d \
      --name app --restart always \
      -p 8000:8000 \
      -e "TZ=Asia/Shanghai" \
      -e DB_HOST=172.17.0.1 \
      -e DB_PWD=mypasswd \
      -e REDIS_HOST=172.17.0.1 \
      -v /home/data/:/home/eladmin/ \
      app:1.0
      # DB_HOST 和 REDIS_HOST 使用的是容器网桥地址,指向宿主机
      # DB_PWD 根据自己 mysql 的密码修改
      # redis如果设置了密码,则要增加 REDIS_PWD 字段指定
      
  • 说明

    构建部署完成后可以考虑清除一下构建过程产生的缓存

    docker container prune
    docker image prune
    

    按照上述的流程,用到了3306637980808000,其中80808000根据自己需要修改,然后记得防火墙要放通这些端口,因为终端访问这些服务时,请求都是从终端发起!最开始脑子抽了以为前后端部署在同一机器,前后端通信时都使用本地地址即可,实际上这样没有考虑到终端访问,即:所有的请求都是从终端发起,无论是请求前端或者是后端!没有前端服务直接到后端服务方向的请求!根据这个思路,nginx、前端和后端的配置都是很好理解的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/not_a_id/article/details/127966383

Jenkins docker部署-爱代码爱编程

docker pull jenkins ##下载jenkins docker run -d -p 8081:8080 -p 50000:50000 --restart always --privileged=true -v /home/admin/jenkins:/var/jenkins_home -v /usr/share/maven:/usr/dat

docker部署jumpserver-爱代码爱编程

1. jump server介绍 JumpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。 JumpServer 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。 Ju

linux resin部署war包,使用docker部署resin服务器-爱代码爱编程

在项目开发中经常要用到severlet 容器,为方便在 主 机 上部署了docker记录一下制作resin镜像的过程。 查看系统版本: 再使用自带的宝塔面板,在软件管理栏直接搜索docker 然后点击安装即可: 一、Docker是一个基于go语言的开源的应用容器引擎,可以将开发者的应用及依赖包打包到一个可移植容器当中,然后发布到任何流行的

Docker 部署 Prometheus-爱代码爱编程

Docker 部署 Prometheus 说明: 监控端安装: Prometheus Server(普罗米修斯监控主服务器 ) Node Exporter (收集Host硬件和操作系统信息) cAdvisor (负责收集Host上运行的容器信息) Grafana (展示普罗米修斯监控界面) 被监控安装: Node Exporter (

Docker 部署Zabbix 5.0LTS-爱代码爱编程

前言        目前公司准备慢慢把应用都往容器化发展,因此公司的zabbix监控系统也需要首当其冲。所以编写了一篇基于Docker容器引擎来部署Zabbix 5.0LTS版本。        首先我们使用容器来部署Zabbix 5.0,需要清楚的知道,一个zabbix监控系统中有哪些组件是必须要部署。像Zabbix-server,Zabbix-web

在服务器上部署EL-Admin前后端分离后台管理系统-爱代码爱编程

1.环境准备 此实验是在EL-Admin在本地前端和后台都能正常运行出来基础上进行的,需要将后端项目打包上传eladmin-system.jar文件,前端打包会有一个dist文件,本文主要介绍Nginx 配置; 环境安装和项目打包请移步官网:快速开始 | EL-ADMIN SSH连接工具推荐使用FinalShell 服务器一台(阿里云或者腾讯云)

docker下YApi部署教程-支持swagger数据导入-爱代码爱编程

文章目录 前言:注意事项:一、安装docker1.更新yum源,更新到最新(也可不更)2. 安装git(如已安装请忽略)3.安装需要的依赖软件包4.设置yum源5.安装Docker6. 启动docker,加入开机启动7. 查看版本是否成功安装二、安装Dcoker Compose三、安装docker-YApi1. 克隆docker-YApi2. 修改

eladmin 后台管理系统 环境搭建-爱代码爱编程

一、准备工作:         1、下载eladmin 后端源代码   https://github.com/elueladminnez/eladmin.githttps://github.com/elueladminnez/eladmin.git         2、下载eladmin-web 前端代码  https://github.com/elu

ELADMIN 部署到 docker 容器-爱代码爱编程

后端源码 前端源码 1、安装Docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun && systemctl start docker && systemctl enable docker 如果你机器是国内的机器,那么需要配

k8s和docker单节点部署_李冰__的博客-爱代码爱编程

修改主机名: hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 配置/etc/hosts 192.168.0.103 k8s-master 192.168.0.107 k8s-node1 卸载podman,可能与docker冲突 sudo yum re

eladmin容器部署超详细过程_千寻简的博客-爱代码爱编程

eladmin容器部署超详细过程 📔 笔记介绍 大家好,这里是千寻简笔记,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔记源码已开源,前往Gitee搜索《chihiro-notes》感谢您的观看。 作者各大平台直

k8s-list机制及resourceversion语义_傅里叶、的博客-爱代码爱编程

kube-apiserver 核心职责 提供Restful API;代理集群组件,如dashboard、流式日志、kubectl exec 会话;缓存全量的etcd 数据且无状态服务可水平扩展。 kube-List操作 绝大部分情况下,kube-apiserver 都会直接从本地缓存提供服务(因为它缓存了集群全量数据),某些特殊情况,apiserve

如何将项目使用docker分块部署_docker应用和数据库分开部署-爱代码爱编程

将项目使用docker分块部署 1. 安装MySQL与Redis2. 构建与启动Java容器3. 安装与配置Nginx容器4. 打包上传代码 1. 安装MySQL与Redis 这里使用的是 m