Docker 部署微服务项目

这篇具有很好参考价值的文章主要介绍了Docker 部署微服务项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 一、前言

二、环境准备

1、安装 Docker

2、Docker 安装 MySQL

3、Docker 安装 Redis

4、Docker 安装 Nacos

5、Docker 安装 Nginx

三、部署后端服务

四、部署前端服务

感谢观看!! 


 一、前言

以谷粒学苑为例,使用 Docker 部署后端服务

二、环境准备

安装之前,确保开放所需要的端口或者关闭防火墙。

使用 阿里云服务器 确保开放安全端口

1、安装 Docker

1、卸载之前的 Docker,没有就忽略这步

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、安装一些依赖包

yum install -y yum-utils

3、建立远程仓库,不要使用官网的,太慢

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、更新 yum 软件包索引【非必须】

yum makecache fast

5、安装 Docker 引擎

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6、启动docker

# 查看docker的版本信息
docker version
# 启动docker
systemctl start docker
# 查看docker是否启动
ps -ef | grep docker
# 设置docker开机自启动
systemctl enable docker

 7、安装 Docker-compose

下载会比较慢,可以多试几次

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予权限
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose --version

8、查询版本号,查询出来就说明安装成功了

docker-compose -v

2、Docker 安装 MySQL

1、拉取镜像

docker pull mysql:8.0

2、启动容器

MYSQL_ALLOW_EMPTY_PASSWORD:先将密码设置为空,为了方便后续操作,8.0版本较于5.7版本有点复杂。这里如果设置密码,有可能登录不上去

docker run -p 3306:3306 --name mysql  -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql  -v /mydata/mysql/conf:/etc/mysql -v /mysql/data/mysqlslave/mysqlfiles:/var/lib/mysql-files  -e MYSQL_ALLOW_EMPTY_PASSWORD=yes  -d mysql:8.0

3、设置 mysql 编码

vi /mydata/mysql/conf/my.cnf
[client] 
default-character-set=utf8 
[mysql] 
default-character-set=utf8 
[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake 
skip-name-resolve

4、远程登录报错: Host is not allowed to connect to this MySQL server 

# 进入mysql容器
docker exec -it mysql bash
# 进入 mysql,由于启动时没设置密码,直接回车登录。
mysql -u root -p
# 修改远程连接权限
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
flush privileges;
#完成上面操作之后重启MySQL服务即可。

5、远程登录报错:plugin caching_sha2_password could not be loaded

# 修改远程登陆
# 修改密码过期规则----》永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 
# 更新用户的密码修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;

# 重置密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456';

3、Docker 安装 Redis

1、创建 redis 配置文件,用于容器卷挂载

mkdir -p /mydata/redis/conf 
vi /mydata/redis/conf/redis.conf
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1

protected-mode no

port 6379

tcp-backlog 511


timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""


always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

2、拉取镜像

docker pull redis

3、启动容器

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data  -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf  -d redis redis-server /etc/redis/redis.conf

4、Docker 安装 Nacos

1、拉取镜像

docker pull nacos/nacos-server:2.2.0

2、启动容器

docker run  --name nacos-quick -e  MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.3.0

3、访问:IP地址+8848/nacos 

5、Docker 安装 Nginx

1、先随便启动一个 Nginx 复制出里面的配置文件

docker run -p 80:80 --name nginx -d nginx:1.10

2、创建 /mydata/nginx/ 目录, 并切换到此目录下,将 Nginx 配置文件都拷贝文件夹里,并修改名称为 conf

mkdir /mydata/nginx/
cd /mydata/nginx
docker container cp nginx:/etc/nginx .
mv nginx/ conf

3、删除容器,并重新启动 Nginx 容器

docker run -p 80:80 --name nginx --restart=always \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

4、访问 IP 地址测试是否启动成功


三、部署后端服务

1、修改项目中的连接地址,改成对应的 IP

Docker 部署微服务项目

2、对项目打包,打包之前确保有maven插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

公共类没有主启动类,无需引入

3、打包完,编写 Dockerfile 用于构建镜像

service_cms
# 基础镜像
FROM openjdk:8
# 环境变量
ENV APP_HOME=/apps
# 创建容器默认进入的目录
WORKDIR $APP_HOME
# 复制jar包到容器中
COPY ./service_cms-0.0.1-SNAPSHOT.jar ./service_cms.jar
# 暴露端口
EXPOSE 8004
# 启动命令
ENTRYPOINT ["java","-jar","-Xms100m","-Xmx100m"]
CMD ["service_cms.jar"]
service_edu
FROM openjdk:8
ENV APP_HOME=/apps
WORKDIR $APP_HOME
COPY ./service_edu-0.0.1-SNAPSHOT.jar ./service_edu.jar
EXPOSE 8001
ENTRYPOINT ["java","-jar","-Xms100m","-Xmx100m"]
CMD ["service_edu.jar"]

所有服务都一样,就是换了 jar 包名称,以及 端口号。

Docker 部署微服务项目

4、将 jar 包 以及 Dockerfile 上传到 服务器,尽量统一放到一个文件夹中,管理方便。每一个文件夹对应一个服务的 jar包以及 Dockerfile

Docker 部署微服务项目

 5、对所有服务创建镜像:进入到对应服务目录内部执行此命令

docker build -t 新镜像名字:TAG . # 不要忘记TAG 后面有个空格和点

Docker 部署微服务项目

 我这里是一个个创建的,比较麻烦,为了方便调试。

可以直接配置 docker-compose 创建镜像并启动容器

4、编写  docker-compose.yaml

version: "3.8"

networks:
    edu:

services:
    # 定义服务名字,只要不冲突即可
    gateway:
        # 镜像名字
        image: gateway:1.0
        # 自定义容器名字
        container_name: gateway
        ports:
            - "8222:8222"
            # 网络模式
        networks:
            - edu
    service_acl:
        image: service_acl:1.0
        container_name: service_acl
        ports:
            - "8009:8009"
        networks:
            - edu
    service_cms:
        image: service_cms:1.0
        container_name: service_cms
        ports:
            - "8004:8004"
        networks:
            - edu
    service_edu:
        image: service_edu:1.0
        container_name: service_edu
        ports:
            - "8001:8001"
        networks:
            - edu
    service_msm:
        image: service_msm:1.0
        container_name: service_msm
        ports:
            - "8006:8006"
        networks:
            - edu
    service_order:
        image: service_order:1.0
        container_name: service_order
        ports:
            - "8007:8007"
        networks:
            - edu
    service_oss:
        image: service_oss:1.0
        container_name: service_oss
        ports:
            - "8002:8002"
        networks:
            - edu
    service_statistics:
        image: service_oss:1.0
        container_name: service_statistics
        ports:
            - "8008:8008"
        networks:
            - edu
    service_ucenter:
        image: service_ucenter:1.0
        container_name: service_ucenter
        ports:
            - "8160:8160"
        networks:
            - edu
    service_vod:
        image: service_vod:1.0
        container_name: service_vod
        ports:
            - "8003:8003"
        networks:
            - edud

将  docker-compose.yaml 上传到 服务器中

Docker 部署微服务项目

5、编排容器

# 编排前可检查一下配置文件,如果没有任何东西输出就没有问题
docker-compose config -q
# 编排
docker-compose up

到这里后端服务就已经部署完毕 

Docker 部署微服务项目

docker logs  容器名   可以通过查看容器日志的方式来调试 

四、部署前端服务

前端的部署直接参考这篇博客: 

谷粒学苑 Vue +NUXT +SpringCloud 部署到服务器_我不是秃神的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-459916.html

感谢观看!! 

到了这里,关于Docker 部署微服务项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

    推荐的做法:买一个云服务器。(主要是要有一个外网 IP) 好处:① 方便 (如果自己搭建,就比较麻烦)、② 便宜 (如果只是为了学习使用,最低配置的服务器完全够用,不到 50 元就能买一年使用权)、③ 有外网 IP ,可以部署项目(有了外网 IP,我们部署的项目,别人

    2024年02月11日
    浏览(65)
  • Docker 部署本地爬虫项目到服务器

    笔记:一直想写一篇博客的,那就趁着周末闲暇时光记录一下。 目录 一、前提准备 二、Docker部署爬虫示例 整体梳理 1、打包构建本地项目镜像 2、在 hub 网站上 创建一个仓库。 3、将本地镜像与hub上的仓库打上标签 4、确保已登录 Dockerhub 账号 5、推送镜像到 Dockerhub 仓库中

    2024年02月03日
    浏览(53)
  • Linux环境下部署项目到服务器完整过程

    1,首先,选择一款云上服务器(这里用的是腾讯云),右侧搜索栏输入云服务器或轻量服务器(这里用的轻量服务器),立即选购 2,选择自己要的服务器配置,系统镜像选择Centos即可 3,实例创建成功后,点击控制台搜索请量服务器找到新创建的实例重置密码 4,点击防火墙

    2024年02月02日
    浏览(43)
  • 解决docker项目部署之Nacos服务注册IP选择

    前段时间为了方便项目的快速部署,我便将其项目部署到了docker中,后来有一次项目调试的时候我发现我在本地启动的项目,无法通过fegin调用我部署在docker里面的服务 我就立刻去nacos里查看项目的启动情况,突然发现其注册的地址是docker内部的物理机地址 然后我就去查了一

    2023年04月08日
    浏览(49)
  • 如何用docker在自己服务器上部署springboot项目

    一、将springboot项目打包 1、maven clean项目 2、maven package项目 打包成功之后生成jar文件(在target目录下) 3、为Java创建Dockerfile 引入jdk8的Docker镜像 FROM openjdk:8 为了使运行其余命令时更容易,让我们设置映像的工作目录。这将指示Docker使用此路径作为所有后续命令的默认位置。通

    2024年02月04日
    浏览(47)
  • Docker容器化部署若依微服务ruoyi-cloud项目

    接下来的内容以 Ubuntu 22.04.1 操作系统为例。 验证版本信息 Note: 在 CentOS7 上使用上述 yum 方式安装的 Docker ,默认自带了Docker Compose Plugin,不过命令是 docker compose 。 docker pull docker run docker images docker ps docker logs docker start docker stop docker restart docker rmi docker rm docker exec docker netwo

    2024年02月04日
    浏览(43)
  • 云服务器使用jenkins+docker自动化部署SpringBoot项目

    docker 安装jenkins,就这一步都恶心死了 //拉取镜像,踩了很多坑,用其它版本的镜像插件一直安装失败,最后用的是lts版本(基础版) 用其它版本要么是连不上插件的下载地址,要么是插件下载不成功  docker pull jenkins/jenkins:lts  部署 docker run --user root -d -p 10240:8080 -p 10241:50

    2024年02月01日
    浏览(52)
  • idea集成Docker + Docker部署SpringBoot项目到云服务器 保姆级教程

    本人使用资源: 云服务器主机:腾讯云宝塔linux 操作系统:OpenCloudOS 8.6 本文分别讲解了: 1、idea如何集成并使用docker 2、springboot项目如何引入Docker管理 3、如何将一个springboot项目使用Docker打包为一个镜像 不仅讲解了方法,还列出了在整个过程中会遇到的一些问题和注意事项

    2024年02月06日
    浏览(49)
  • 手动将Java SpringBoot项目部署到云服务器上(使用docker)

    本文记录一下我作为一个小白如何通过docker手动将java springboot项目部署到云服务器上(以腾讯云的轻量应用服务器为例)。 但是我个人还是推荐安装一个宝塔面板部署 ,真的全程自动化,非常方便,网上有很多相关的教程可以搜搜看。所以我写这个教程其实只想记录一下我

    2024年04月25日
    浏览(43)
  • 如何使用Docker将.Net6项目部署到Linux服务器(一)

    目录 一 配置服务器环境 1.1 配置yum                                                                                                                     1.1.1 更新yum包 1.1.2 yum命令 1.2 配置docker                                                           

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包