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

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

1、云服务器准备

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

  • 我个人用的是腾讯云:
    • https://curl.qcloud.com/82vK4zXG一年低至72元就有一个云服务器
  • 阿里云
    • https://www.aliyun.com/activity/new?source=5176.11533457&userCode=6yb1ivf2

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

2、安装Docker

# 安装Docker
yum -y install docker
# 启动docker
systemctl start docker

开启远程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

如何用Docker容器部署项目,并外部访问?_第1张图片
安全组中开放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

使用Navicat/datagrid导入数据库

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

如何用Docker容器部署项目,并外部访问?_第2张图片

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>

6、打成Jar包

如何用Docker容器部署项目,并外部访问?_第3张图片
如何用Docker容器部署项目,并外部访问?_第4张图片

7、开始制作镜像

如何用Docker容器部署项目,并外部访问?_第5张图片
如何用Docker容器部署项目,并外部访问?_第6张图片

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

如何用Docker容器部署项目,并外部访问?_第7张图片

9、启动

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

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

在这里插入图片描述

10、访问项目

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

11、域名映射

进入域名映射系统,比如我的用的是阿里云的。
在这里插入图片描述
进入其中点击解析,这里要配两个
如何用Docker容器部署项目,并外部访问?_第8张图片
如何用Docker容器部署项目,并外部访问?_第9张图片

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

你可能感兴趣的:(工作心得,docker,运维,容器)