Docker实际案例

Docker发布案例

一、最常用使用说明

1. 拉取镜像:

// 方法一:从远程仓库拉取
docker pull 镜像名称:镜像版本
docker pull mysql:8.0.23

// 方法二:镜像linux系统上传后在导入
docker load < 镜像名称
docker load < rabbitmq.tar.gz

2. 创建运行守护式容器(容器后台自动运行)

docker run -di --name=容器的名称 镜像的名称
2.1 安装MySQl数据库

Docker会为每一个容器1创建一个虚拟网卡,然后分配一个Docker的内网IP

问题:A容器部署了MySQl,B容器的Java程序想要访问A容器的MySQl?

  • B容器需要写A容器的内网IP,比较麻烦。

  • A、B容器公用宿主的网卡IP

docker run -it -d --name mysql --net=host \
-m 500m \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/config:/etc/mysql/conf.d  \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai mysql:8.0.23 \
--lower_case_table_names=1

说明:

docker run -it -d --name mysql --net=host 			公用宿主IP
-m 500m 											分配500M内存
-v /root/mysql/data:/var/lib/mysql 					映射MySQL数据文件,/var 运行时需要改变的数据文件
-v /root/mysql/config:/etc/mysql/conf.d  			映射MySQl配置文件,/etc 存放系统的配置文件:
-e MYSQL_ROOT_PASSWORD=abc123456 					设置MySQL密码
-e TZ=Asia/Shanghai mysql:8.0.23 					设置时区
--lower_case_table_names=1
2.2 安装MongoDB数据库

下载最新版本的mongoDB数据库

docker pull mongo

创建配置文件:/root/mongo/mongod.conf文件

即将配置文件放到数据文件夹下

mkdir -p /root/mongo
vim /root/mongo/mongod.conf

内容:

net:
   port: 27017
   bindIp: "0.0.0.0"

storage:
   dbPath: "/data/db"
   
security:
   authorization: enabled

说明:必须是3个空格

net:
   port: 27017						端口
   bindIp: "0.0.0.0"				允许远程访问

storage:
   dbPath: "/data/db"				数据目录的路径
   
security:
   authorization: enabled			允许通过用户名密码的方式访问

创建容器:

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

说明:

docker run -it -d --name mongo --net=host \
-m 500m \
-v /root/mongo:/etc/mongo \						数据文件目录映射到Linux主机上,上方包含配置文件
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai \
mongo --config /etc/mongo/mongod.conf			指定mongo使用什么样的配置文件,参数写在镜像名字的后面
2.3 安装Redis

拉取镜像

docker pull redis:6.0.10

创建/root/redis/conf/redis.conf文件

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

内容:

bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 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

运行容器

docker run -it -d --name redis -m 300m  --net=host \
-v /root/redis/conf:/usr/local/etc/redis \
-e TZ=Asia/Shanghai \
redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf
2.4 安装RabbitMQ
docker load < rabbitmq.tar.gz
docker run -it -d --name mq -m 300m --net=host -e TZ=Asia/Shanghai rabbitmq

二、Docker 中部署java项目

1. 运行Java项目

查找软件运行JDK版本的镜像

https://hub.docker.com/_/openjdk?tab=tags

打包后台软件

maven按钮 点击闪电图标(表示不执行测试用例) lifecycle package右键(run maven build)

创建目录存放jar文件

  • 在云主机的/root/emos目录中放入emos-wx-api.jar文件
mkdir -p /root/emos

拉取JDK镜像

docker pull openjdk:15.0.2-oraclelinux8
#创建新的镜像引用,修改名字,相当于复制一个
docker tag openjdk:15.0.2-oraclelinux8 jdk15
#删除原有镜像引用,删除原有的
docker rmi openjdk:15.0.2-oraclelinux8

创建容器

docker run -it -d --name=emos-wx-api --net=host -m 500m \
-v /root/emos:/root/emos \
-e TZ=Asia/Shanghai jdk15

运行后端程序

#进入Java容器
docker exec -it emos-wx-api bash
cd /root/emos
#运行工作流项目
nohup  java -jar emos-wx-api.jar  >> out.log 2>&1 &

# 退出JDK容器
exit

查看out.log日志,看程序是否正常启动。

2. Nginx安装

  • 域名只能绑定到云主机的80端口,所以我们要安装Nginx程序,开启80端口
  • Nginx程序,我们还可以为云主机设置SSL,开通HTTPS访问。
  • 为yum扩展额外的安装源,这样才能用yum命令安装Nginx
rpm -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

# 通过linux IP就可以看到Nginx的登陆界面

怎样查看nginx的运行

3. 绑定域名,开通https服务

3.1 将两个文件,都需要上传到云主机的/etc/nginx/目录
3.2 编辑/etc/nginx/nginx.conf文件,添加SSL设置
http {
    ……

    server {
        #SSL 访问端口号为 443
        listen 443 ssl;
        #填写绑定证书的域名
        server_name zkallen.club;
        #证书文件名称
        ssl_certificate zkallen.club_bundle.crt;
        #私钥文件名称
        ssl_certificate_key zkallen.club.key;
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /emos-wx-api {
            proxy_pass http://localhost:8080/emos-wx-api;
        }
        location /emos-workflow {
            proxy_pass http://localhost:9090/emos-workflow;
        }
    }
}
service nginx restart
101.43.84.151
http://101.43.84.151:8080/emos-wx-api/swagger-ui.html
https://www.zkallen.club

三、Docker中部署微信小程序

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值