• 如何用Docker容器部署项目,并外部访问?


    假设我们已经开发好一个SpringBoot项目

    1、云服务器准备

    部署一般是用云服务器解决,比如

    然后当我们已经拥有一部服务器之后,我们就可以开始部署了,首先我们我们需要安装docker

    2、安装Docker

    # 安装Docker
    yum -y install docker
    # 启动docker
    systemctl start docker
    
    • 1
    • 2
    • 3
    • 4

    开启远程docker服务

    # 修改docker配置文件
    vim /lib/systemd/system/docker.service
    # 在ExecStart=后添加配置,远程访问docker的端口
    为2375
    ExecStart=/usr/bin/dockerd-current -H
    tcp://0.0.0.0:2375 -H
    unix://var/run/docker.sock \
              --add-runtime dockerrunc=/usr/libexec/docker/docker-runccurrent \
              --default-runtime=docker-runc \
              --exec-opt
    native.cgroupdriver=systemd \
              --userland-proxypath=/usr/libexec/docker/docker-proxycurrent \
              --initpath=/usr/libexec/docker/docker-initcurrent \
              --seccompprofile=/etc/docker/seccomp.json \
              $OPTIONS \
              $DOCKER_STORAGE_OPTIONS \
              $DOCKER_NETWORK_OPTIONS \
              $ADD_REGISTRY \
              $BLOCK_REGISTRY \
              $INSECURE_REGISTRY \
              $REGISTRIES
    # 重启docker
    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述
    安全组中开放3306,2375两个端口

    3、安装项目所需要的环境(本次用的是一个单体项目)

    3.1、mysql安装

    # 拉取mysql镜像
     docker pull mysql:5.7
     # 启动容器
     docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
    
    • 1
    • 2
    • 3
    • 4

    使用Navicat/datagrid导入数据库

    4、修改项目中对应的mysql路径

    在这里插入图片描述

    5、开始利用maven制作镜像

    项目中Pom文件中添加一下配置

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <version>2.7.0version>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombokgroupId>
                                <artifactId>lombokartifactId>
                            exclude>
                        excludes>
                    configuration>
                plugin>
                
                <plugin>
                    <groupId>com.spotifygroupId>
                    <artifactId>docker-maven-pluginartifactId>
                    <version>1.2.2version>
                    <configuration>
                        
                        <dockerHost>http://localhost:2375dockerHost>
                        
                        <baseImage>openjdk:11baseImage>
                        
                        <maintainer>zhzmaintainer>
                        <resources>
                            <resource>
                                
                                <targetPath>/targetPath>
                                
                                <directory>${project.build.directory}directory>
                                
                                <include>${project.build.finalName}.jarinclude>
                            resource>
                        resources>
                        <workdir>/workdir>
                        <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]entryPoint>
                        <forceTags>trueforceTags>
                        
                        <imageName>${project.artifactId}imageName>
                        
                        <imageTags>
                            <imageTag>${project.version}imageTag>
                        imageTags>
                    configuration>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    6、打成Jar包

    在这里插入图片描述
    在这里插入图片描述

    7、开始制作镜像

    在这里插入图片描述
    在这里插入图片描述

    8、上服务器中看是否有镜像

    在这里插入图片描述

    9、启动

    这里我用8080是因为我的本地服务有redis,已经占用80端口了

     docker run -d -p 8080:80 gowt-travel:1.0.0-SNAPSHOT 
    
    • 1

    在这里插入图片描述

    10、访问项目

    我们可以发现我已经可以访问了。

    11、域名映射

    进入域名映射系统,比如我的用的是阿里云的。
    在这里插入图片描述
    进入其中点击解析,这里要配两个
    在这里插入图片描述
    在这里插入图片描述

    我是zhz小白,一个在互联网行业的小白,立志成为一名架构师
    https://blog.csdn.net/zhouhengzhe?t=1

  • 相关阅读:
    Spring 源码阅读 74:事务管理的原理 - BeanFactoryTransactionAttributeSourceAdvisor 分析
    STM32 中断详解
    引用计数法
    STM32CubeMX学习笔记(44)——USB接口使用(HID按键)
    C语言之数组练习题
    MySQL-约束
    【计算机网络】第四章 网络层
    【报错】在浏览器输入localhost为什么启动的是Microsoft的IIS windows首页?
    单阶段目标检测--NMS
    大数据安全
  • 原文地址:https://blog.csdn.net/zhouhengzhe/article/details/126805467