Docker实际案例
Docker发布案例一、最常用使用说明1. 拉取镜像:// 方法一:从远程仓库拉取docker pull 镜像名称:镜像版本docker pull mysql:8.0.23// 方法二:镜像linux系统上传后在导入docker load < 镜像名称docker load < rabbitmq.tar.gz2. 创建运行守护式容器(容器后台自动运行)docker run -di --
·
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条内容
所有评论(0)