使用docker部署项目程序

3 篇文章 0 订阅
2 篇文章 0 订阅

一.安装docker程序

# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、安装docker,出现输入的界面都按y。下载比较慢,比较费时,耐心等待
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

docker的基础命令

下载镜像(:后面是版本号,如果不写,默认下载最新lastest):
● docker pull redis:5.0

查看下载的镜像:
● docker images

启动容器:
● docker run -it --name=mysql mysql:5.7 /bin/bash(交互式,创建后直接进入容器,退出后容器关闭)
● docker run -id --name=mysql mysql:5.7(后台运行)

-it方式会在创建容器后直接进入容器,一顿操作后exit退出时容器也会关闭。
-id方式会在后台启动容器,如果你想进入容器,需要配合另一个命令:
● docker exec -it mysql /bin/bash

docker容器的启动比较麻烦,更多细节后面安装过程中自行体会。

启动容器后会用到以下几个操作, 比如查看容器:
● docker ps -a
启动、停止、重启:
● docker start rabbitmq
● docker stop rabbitmq
● docker restart rabbitmq

停止容器后,才能删除容器(镜像就好比qq.exe,容器则是运行的qq程序,你卸载qq和删除qq.exe安装包无关)
● docker rm rabbitmq(具体名字根据自己的来)
如果想连带镜像也删了(多了i,盲猜是 remove images 的缩写):
● docker rmi rabbitmq(具体名字根据自己的来)

另外介绍几个批量操作的命令,后面你可能会需要:

启动docker
systemctl start docker
开机启动docker
systemctl enable docker
停止docker
systemctl stop docker
查看docker状态
systemctl status docker
docker中 启动所有的容器命令
docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 关闭所有的容器命令
docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 删除所有的容器命令
docker rm $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)
docker中 删除所有的镜像
docker rmi $(docker images | awk ‘{print $3}’ |tail -n +2)

docker的常用命令

# 启动docker
systemctl start docker

#停止docker
systemctl stop docker

# 查看docker状态
systemctl status docker

#查看下载的镜像:
docker images

# 查看容器:
docker ps -a

# 启动、停止、重启: 后面接容器名
docker start rabbitmq
docker stop rabbitmq
docker restart rabbitmq

# 停止容器后,才能删除容器(镜像就好比qq.exe,容器则是运行的qq程序,你卸载qq和删除qq.exe安装包无关)
docker rm rabbitmq(具体名字根据自己的来)
# 如果想连带镜像也删了(多了i,盲猜是 remove images 的缩写):
docker rmi rabbitmq(具体名字根据自己的来)

在使用腾讯云服务器的条件下,因为Docker在线安装镜像是从国外的DockerHub网站下载件,所以速度超级慢,所以我们要给Docker设置加速器。我们用的是腾讯云主机,当然设置腾讯云加速器是最快的。
打开/etc/docker/daemon.json文件,然后设置成如下内容:

{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

重新启动Docker服务,加速器才能生效

 service docker restart

1.安装mysql

利用刚才设置的加速器,我们可以在线安装MySQL镜像,这里我下载8.0.23版本的MySQL数据库

docker pull mysql:8.6.23

创建容器的时候,我们需要把MySQL容器内的数据目录映射到CentOS系统上面。如果MySQL容器挂掉了,数据库文件不会丢失。我们新建一个MySQL容器,挂载上这个数据目录就又能正常使用MySQL了。

**Docker会给每个容器创建一个虚拟的网卡,然后分配一个Docker内网IP地址。**假设A容器部署了MySQL,B容器中的Java程序想要访问A容器的MySQL,JDBC路径就要写A容器的Docker内网IP地址,略显麻烦。

这次部署项目,我打算把容器设置成host模式,就是不让Docker为容器虚拟网卡,Docker容器直接使用CentOS的网卡。A容器和B容器中使用的都是CentOS的网卡,所以A容器中localhost代表CentOS,B容器中的localhost也代表CentOS,两个容器相互访问,URL地址写localhost即可。例如B容器中JDBC路径的host写localhost,就能访问到A容器里面的MySQL。这样我们部署的若干容器,相互访问就简单多了。

MySQL容器我分配内存空间是500M,如果将来觉得不够用,删除容器,再创建新容器的时候分配更大的内存。而且只要挂载上那些文件目录,MySQL的数据就不会丢失。
–net=host表示设置为host模式
-m 50om 表示内存大小
-v /root/mysql/data:/var/lib/mysql 路径映射
-v /root/mysq1/config:/etc/mysql/conf.d 配置文件映射
-e MYSQL_ROOT_PASSWORD=abc123456 设置特定参数

docker run -it -d --name mysql --net=host \
-m 50om -v /root/mysql/data:/var/lib/mysql \
-v /root/mysq1/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/shanghai mysql:8.0.23

用Navicat连接linux端口部署的MySQL数据库,创建emos逻辑库,然后导入数据。

2.安装MongoDB

执行命令,下载最新版本的MongoDB镜像

docker pull mongo

创建/root/mongo/ mongod.conf配置文件,然后在文件中添加如下内容:

mkdir -p /root/mongo       //创建root目录下的mongo文件夹
vim /root/mongo/mongod.conf    //在该文件下方编辑mongod.conf文件

编辑mongod.conf文件的内容:(net: port前空三个字符)
bindIp: "0.0.0.0"允许远程访问,
authorization: enabled 通过用户名密码来访问

net:
   port: 27017
   bindIp: "0.0.0.0"

storage:
   dbPath: "/etc/mongo/data"

security:
   authorization: enabled

创建容器,为MongoDB分配50OM内存

docker run -it -d --name mongo --net=host \
-v /root/mongo:/etc/mongo -m 500m \
-e MONGO_INITDB_ROOT_USERNAME=admin \ 
-e MONGO_INITDB_ROOT_PASSWORD=abc123456 \ 
mongo --config /etc/mongo/mongod.conf

用Navicat连接linux端口部署的Mongo数据库

3.安装Redis

执行命令,在线安装Redis镜像

 docker pull redis:6.0.10

创建/root/redis/conf/redis.conf文件进行编辑,然后添加如下内容:

mkdir -p /root/redis/conf/
vim /root/redis/conf/redis.conf

redis.conf编辑内容为:

bind 0.0.0.0
protected-mode yesport 6379
tcp-backlog 511timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass abc123456

执行命令,创建Redis容器,分配300M内存

docker run -it -d --name redis -m 300m --net=host \ 
-v /root/redis/conf:/usr/local/etc/redis redis:6.0.10 \ 
redis-server /usr/local/etc/redis/redis.conf

4.安装RabbitMQ

把镜像文件rabbitmq.tar.gz上传到云主机,然后导入Docker

docker load < rabbitmq.tar.gz

执行命令,创建RabbitMQ容器,分配300M内存

docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management

5.部署人脸识别程序

把人脸识别镜像文件face.tar.gz上传到云主机(2M带宽大概需要40分钟),导入Docker环境

docker load < face.tar.gz

把demo.tar文件上传到Linux根目录,然后解压缩

 tar -xvf demo.tar

执行命令,创建人脸识别容器,分配1GB内存

docker run -d -it -v /demo:/demo --net=host -m 1g --name node face
#进人到node容器
docker exec -it node bash

#访问容器根目录的文件夹(因为实现了目录挂载映射)
cd /demo
#把Python程序挂起到后台运行
nohup python3 -c "from app import app;" > log.out 2>&1 &

#运行程序后别急着退出容器ps -a查询进程
ps -a

#退出容器
exit

二、打包Java项目

修改application.yml文件中的MySQL、MongoDB、Redis连接信息,把IP地址改成localhost

还有下面这些位置的IP地址也要改成localhost,签到照片临时存放地址需要改成Linux系统的某个路径,如:/root/emos/image
在这里插入图片描述
进行Idea将项目打包成jar包
在这里插入图片描述
在这里插入图片描述

三、部署Java项目

假如你是用JDK12开发的Emos项目,那么你部署的时候尽量选择这个JDK版本的Docker容器,你要先去DockerHub网站搜索相关的OpenJDK镜像文件。

用浏览器访问这个网址,https://hub.docker.com/_/openjdk?tab=tags在文本框中填写你要查找的OpenJDK版本
在这里插入图片描述

#粘贴使用在docker仓库找到的对应jdk版本的docker版本进行安装
docker pull openjdk:12.0.2-jdk-oraclelinux7
#创建新的镜像引用(修改一下镜像名为jdk12)
docker tag openjdk:12.0.2-jdk-oraclelinux7 jdk12
#删除原有镜像引用
docker rmi openjdk:12.0.2-jdk-oraclelinux7

因为OpenJDK没有1.8版本,所以使用JDK1.8开发的同学,需要下载Oracle官方的1.8版本镜像,命令如下:

docker pull kdvolder/jdk8

在云主机的/root/emos目录中放入emos-wx-api.jar文件,然后进入Java容器运行项目创建Java容器,分配30OM内存

mkdir -p /root/emos/
docker run -it -d --name=emos-wx-api --net=host -m 300m \ 
-v /root/emos:/root/emos jdk12
#进人Java容器
docker exec -it emos-wx-api bash 
cd /root/emos
#运行工作流项目
nohup java -jar emos-wx-api.jar >> out.log 2>&1 &

三、安装Nginx服务器

因为域名只能绑定到云主机的80端口,所以我们要安装Nginx程序,开启80端口。将来通过这个Nginx程序,我们还可以为云主机设置SSL,开通HTTPS访问。
为yum扩展额外的安装源,这样才能用yum命令安装Nginx

rpm r-Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#执行安装
yum install nginx -y
#启动Nginx
service nginx start

四、云主机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解压缩之后,找到其中的nginx目录,有两个文件,都需要上传到云主机的/etc/nginx/目录
编辑/etc/nginx/nginx.conf文件,添加SSL设置

http {
    ...
    server{
        #SSL访问端口号为443
        listen 443 ssl;
        #填写绑定证书的域名
        server_name www.myxxx.cn;
        #证书文件名称
        ssl_certificate 1_www.myxxx.cn_bundle.crt;
        #私钥文件名称
        ssl_certificate_key 2_www.myxxx.cn.key;ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #请按照以下套件配置,配置加密套件,写法遵循openssl标准。
        ...........
        #通配符
        location / {
            root   html;
            index index.html index.htm;
        }
        #域名加上相对地址/emos-wx-api可以进行转发http://localhost:8080/emos-wx-api
        location /emos-wx-api {
        	proxy_pass http://localhost:8080/emos-wx-api;
        }
        location / emos-workflow {
        	proxy_pass http://localhost:9090/emos-workflow;
        }
    }
}

重新启动Nginx程序

service nginx restart

用浏览器访问注册的域名,协议名称必须是https

五、执行备案

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
好的,下面我将详细介绍使用 Docker 部署项目的步骤和注意事项。 1. 安装 Docker 首先需要安装 Docker,可以从官方网站下载相应的安装包进行安装。安装完成后,可以使用 docker version 命令来检查 Docker 是否安装成功。 2. 编写 Dockerfile Dockerfile 是一个包含构建 Docker 镜像所需步骤的文本文件。需要指定应用程序的依赖项、端口、启动命令等信息。下面是一个示例的 Dockerfile: ``` # 继承基础镜像 FROM python:3.8-slim-buster # 安装依赖项 RUN apt-get update && apt-get install -y \ curl \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 复制应用程序文件 COPY . /app # 安装 Python 依赖项 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE 8000 # 启动应用程序 CMD ["python", "app.py"] ``` 在 Dockerfile 中,首先使用 FROM 命令从已有的基础镜像中继承。然后使用 RUN 命令安装依赖项,使用 WORKDIR 命令设置工作目录,使用 COPY 命令将应用程序文件复制到镜像中,使用 RUN 命令安装 Python 依赖项,使用 EXPOSE 命令暴露端口,最后使用 CMD 命令启动应用程序。 3. 构建 Docker 镜像 使用 docker build 命令根据 Dockerfile 中的指令来构建镜像。在命令行中进入 Dockerfile 所在目录,然后执行以下命令: ``` docker build -t myapp:latest . ``` 其中,-t 参数指定镜像的名称和标签,. 表示使用当前目录下的 Dockerfile。 4. 运行 Docker 容器 使用 docker run 命令启动容器,可以指定端口映射、环境变量等参数。例如: ``` docker run -d -p 8000:8000 myapp:latest ``` 其中,-d 参数表示容器在后台运行,-p 参数表示将容器内部的端口映射到主机上,myapp:latest 表示要运行的镜像名称和标签。 5. 测试应用程序 使用浏览器或其他工具访问应用程序的 IP 地址和端口号,测试应用程序的运行情况。例如,在浏览器中访问 http://localhost:8000/,如果应用程序能够正常响应,说明部署成功。 需要注意的是,Docker 部署需要了解 Docker 的基本概念和命令,还需要考虑到安全性、性能、可靠性等方面的问题。例如,在编写 Dockerfile 时需要注意减小镜像大小,避免安全漏洞等。在运行容器时需要考虑资源限制、日志管理等。因此,建议在实际操作中仔细阅读 Docker 官方文档,并根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值