当前位置:首页 > CN2资讯 > 正文内容

docker 服务器迁移 docker部署到服务器

13小时前CN2资讯

一、Docker基本知识

写DockerFile文件创建自己的镜像

volumn挂载目录

容器间通信:同一network下

docker-compose进行多容器部署

二、部署过程(docker-hub网站里有现成容器部署方案)

1.部署nacos

docker-compose中内容如下:

version: "3.3" services: nacos: image: nacos/nacos-server:2.0.2 #镜像 ports: #端口映射,容器端口映射到服务器端口上 - "8848:8848" environment: #运行参数配置 - "JVM_XMS=256m" - "JVM_XMX=256m" - "MODE=standalone"

2.部署mysql

docker-compose中内容更新如下:

version: "3.9" networks: yingxue_network: volumes: data: services: nacos: image: nacos/nacos-server:2.0.2 ports: - "8848:8848" environment: - "JVM_XMS=256m" - "JVM_XMX=256m" - "MODE=standalone" networks: - yingxue_network mysql: image: mysql:5.7 ports: - "3306:3306" networks: - yingxue_network volumes: - data:/var/lib/mysql #挂载数据卷,参考的docker-hub - ./yingxue.sql:/docker-entrypoint-initdb.d/yingxue.sql #将这个sql文件挂载到初始化位置,让这个sql文件执行 environment: - "MYSQL_ROOT_PASSWORD=root" - "MYSQL_DATABASE=yingxue"

3.部署redis

docker-compose中内容更新如下:

version: "3.3" networks: yingxue_network: volumes: data: redisdata: services: nacos: image: nacos/nacos-server:2.0.2 ports: - "8848:8848" environment: - "JVM_XMS=256m" - "JVM_XMX=256m" - "MODE=standalone" networks: - yingxue_network mysql: image: mysql:5.7 ports: - "3306:3306" networks: - yingxue_network volumes: - data:/var/lib/mysql - ./yingxue.sql:/docker-entrypoint-initdb.d/yingxue.sql environment: - "MYSQL_ROOT_PASSWORD=123" - "MYSQL_DATABASE=yingxue" redis: image: redis ports: - "6379:6379" volumes: - redisdata:/data

4.部署微服务后台代码

对于微服务来说,没法用maven对每一个进行打包。

maven聚合打包位置,注意不能在每个模块下边用package,要点击根目录下的package,这样就能打包所有的模块了。

上边是错的,正确的打包位置:

如果部署过程中报没有主清单属性,则需要在每个模块添加插件,并且指明主类。

 打包完以后,每一个模块下都会出现一个jar包。

然后我们创建一个image文件夹,下边有各个模块的文件夹,然后把对应jar包放入对应文件夹,并在每一个文件夹下创建一个DockerFile文件,借助这个将其构建为镜像。 

 

 

 

 我们以其中两个DockerFile文件为例。来看一下它是如何构建镜像的。

FROM openjdk:8-jre ENV APP_PATH=/apps WORKDIR $APP_PATH COPY yingxue-admins-1.0-SNAPSHOT.jar $APP_PATH/app.jar EXPOSE 8980 ENTRYPOINT ["java","-jar"] CMD ["app.jar"]FROM openjdk:8-jre ENV APP_PATH=/apps WORKDIR $APP_PATH COPY yingxue-category-1.0-SNAPSHOT.jar $APP_PATH/app.jar EXPOSE 8981 ENTRYPOINT ["java","-jar"] CMD ["app.jar"]

然后我们在Docker-compose文件中增加这几个镜像,运行docker-compose让这些镜像在容器中运行。

version: "3.9" networks: yingxue_network: volumes: data: redisdata: services: nacos: image: nacos/nacos-server:2.0.2 ports: - "8848:8848" environment: - "JVM_XMS=256m" - "JVM_XMX=256m" - "MODE=standalone" networks: - yingxue_network mysql: image: mysql:5.7 ports: - "3306:3306" networks: - yingxue_network volumes: - data:/var/lib/mysql - ./yingxue.sql:/docker-entrypoint-initdb.d/yingxue.sql environment: - "MYSQL_ROOT_PASSWORD=root" - "MYSQL_DATABASE=yingxue" redis: image: redis:5.0.10 ports: - "6379:6379" volumes: - redisdata:/data admins: build: context: ./images/admins dockerfile: Dockerfile ports: - "8980:8980" depends_on: - mysql - nacos - redis category: build: context: ./images/category dockerfile: Dockerfile ports: - "8981:8981" depends_on: - mysql - nacos - redis gateway: build: context: ./images/gateway dockerfile: Dockerfile ports: - "9999:9999" depends_on: - mysql - nacos - redis users: build: context: ./images/users dockerfile: Dockerfile ports: - "8982:8982" depends_on: - mysql - nacos - redis videos: build: context: ./images/videos dockerfile: Dockerfile ports: - "8983:8983" depends_on: - mysql - nacos - redis

我们在linux系统下/root目录下创建一个运行当前项目的文件夹,然后将compose文件以及image文件夹放进去。然后进入到当前项目文件夹,使用docker-compose up -d命令运行即可。

 

 

 

补充:docker-compose具体语法详解:

version: "3" # 指定docker-compose语法版本 services: # 从以下定义服务配置列表 server_name: # 可将server_name替换为自定义的名字,如mysql/php都可以 container_name: container_name # 指定实例化后的容器名,可将container_name替换为自定义名 image: xxx:latest # 指定使用的镜像名及标签 build: # 如果没有现成的镜像,需要自己构建使用这个选项 context: /xxx/xxx/Dockerfile # 指定构建镜像文件的路径 dockerfile: .... # 指定Dockerfile文件名,上一条指定,这一条就不要了 ports: - "00:00" # 容器内的映射端口,本地端口:容器内端口 - "00:00" # 可指定多个 volumes: - test1:/xx/xx # 这里使用managed volume的方法,将容器内的目录映射到物理机,方便管理 - test2:/xx/xx # 前者是volumes目录下的名字,后者是容器内目录 - test3:/xx/xx # 在文件的最后还要使用volumes指定这几个tests volumes_from: # 指定卷容器 - volume_container_name # 卷容器名 restarts: always # 设置无论遇到什么错,重启容器 depends_on: # 用来解决依赖关系,如这个服务的启动,必须在哪个服务启动之后 - server_name # 这个是名字其他服务在这个文件中的server_name - server_name1 # 按照先后顺序启动 links: # 与depend_on相对应,上面控制容器启动,这个控制容器连接 - mysql # 值可以是- 服务名,比较复杂,可以在该服务中使用links中mysql代替这个mysql的ip networks: # 加入指定的网络,与之前的添加网卡名类似 - my_net # bridge类型的网卡名 - myapp_net # 如果没有网卡会被创建,建议使用时先创建号,在指定 environment: # 定义变量,类似dockerfile中的ENV - TZ=Asia/Shanghai # 这里设置容器的时区为亚洲上海,也就解决了容器通过compose编排启动的 时区问题!!!!解决了容器的时区问题!!! 变量值: 变量名 # 这些变量将会被直接写到镜像中的/etc/profile command: [ #使用 command 可以覆盖容器启动后默认执行的命令 '--character-set-server=utf8mb4', #设置数据库表的数据集 '--collation-server=utf8mb4_unicode_ci', #设置数据库表的数据集 '--default-time-zone=+8:00' #设置mysql数据库的 时区问题!!!! 而不是设置容器的时区问题!!!! ] server_name2: # 开始第二个容器 server_name: stdin_open: true # 类似于docker run -d tty: true # 类似于docker run -t volumes: # 以上每个服务中挂载映射的目录都在这里写入一次,也叫作声明volume test1: test2: test3: networks: # 如果要指定ip网段,还是创建好在使用即可,声明networks my_net: driver: bridge # 指定网卡类型 myapp_net: driver: bridge

 



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23836.html

    分享给朋友:

    “docker 服务器迁移 docker部署到服务器” 的相关文章

    宝塔的设计概念与历史发展:信仰与文化的桥梁

    宝塔的设计概念 宝塔,这一宗教建筑的象征,体现了深厚的文化内涵和独特的美学设计。作为佛教的重要象征,宝塔的设计概念不仅包括其结构和形态的美感,也涵盖了宗教信仰的意义。最初的宝塔设计如同一个倒扣的钵盂,象征着对佛教教义的恭敬与追思。随着时间的推移,宝塔的构造和装饰逐渐演变,形成了今天我们所见的多样化风...

    提升国际数据传输质量的9929线路分析与应用

    谈到9929线路,首先让我给大家介绍一下AS9929线路的基本情况。这条线路是中国联通为了满足国际市场的需求而推出的一种IP传输服务专线。它的起点在香港,通过海底光缆将中国与亚太及北美地区紧密连接。同时,这条线路还在欧洲和非洲设立了多个重要的网络节点(POP点),这就为跨国数据传输提供了坚实的基础。...

    搬瓦工查看流量使用的最佳方法与管理策略

    在使用搬瓦工(BandwagonHost)这家VPS提供商时,了解流量的相关信息是非常重要的。搬瓦工的流量套餐设计十分灵活,满足了不同用户的需求。每个VPS方案都设有流量限制,比如每月500GB或1TB,这些限制会直接影响到我们如何使用这些资源。用户在选择方案时,应该充分考虑自己的日常使用习惯,以便...

    使用Namesilo优惠码注册域名,轻松省钱的秘诀

    Namesilo概述:域名注册的专业选择 要谈到域名注册,我想到的首先就是Namesilo。作为一家成立于2010年的域名注册商,Namesilo吸引了不少用户。我对它的第一印象是专业,尤其是在价格和服务上,使其成为许多人的首选。它的总部位于美国亚利桑那州,作为ICANN认证的注册商,Namesil...

    芝加哥时区详解:如何有效应对中部标准时间的挑战与机遇

    芝加哥位于美国伊利诺伊州的东北部,是美国重要的城市之一。对于身处这座城市的人们,了解芝加哥时区无疑是日常生活中的一部分。我自己在这里生活的时候,时区的变化让我对时间更加敏感。芝加哥时区,其实就是中部标准时间(Central Standard Time,CST), UTC-6。这种时间定义不仅影响着我...

    全面掌握路由测试:提升网络性能的关键技术与工具

    路由测试的定义 路由测试,简单来说,就是对网络路由器性能和功能进行的一系列评估和验证。它帮助我们了解网络设备如何处理数据包,从而保证信息在传输过程中的安全和高效。这项测试通常涉及到监测路由器的各种指标,比如数据包的转发速度、延迟和网络稳定性,以确保设备符合预期的性能标准。 当我第一次接触路由测试时,...