1.资源环境
阿里云ecs服务器、centos8 系统 、 docker 2.0 、nginx 、微信小程序、 springboot jar包 、ssl证书、 已备案的域名 www.dan-huang.cn
2.centos8 中安装docker
卸载原有docker环境
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装所需的软件包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
配置阿里云源地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版docker
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
3.docke 中安装nginx
3.1.拉取最新版nginx 镜像
docker pull nginx
3.2.创建nginx 容器
docker run -d -p 80:80 -p 443:443 --name nginx nginx
3.3.进入容器内部
docker exec -it 容器名或容器id /bin/bash
3.4.将ssl证书复制到容器中
从宿主机器中复制文件到容器中: /usr/local/software/docker_nginx/nginx/conf.d/cert 宿主机器文件路径 c63be682d8eb: 容器id /etc/nginx 容器中路径
注意: 证书需要放在nginx文件夹下面
docker cp /usr/local/software/docker_nginx/nginx/conf.d/cert c63be682d8eb:/etc/nginx
3.5.宿主机器上新建nginx https 配置文件 my.conf (文件名不固定、文件后缀名固定)
文件内容详解
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.dan-huang.cn; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/8146294_www.dan-huang.cn.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/8146294_www.dan-huang.cn.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
#ssl_prefer_server_ciphers on;
location ~* .*\.html$ { #静态资源配置
root /etc/nginx/html;
index index.html;
}
location /subapi/ { # 匹配访问路径中含subaoi的请求
proxy_pass http://172.17.0.3:8080/; # 匹配接口示例 : 172.17.0.3 容器ip地址 https://www.dan-huang.cn/subapi/subapp/quartz/test (前端接口路径) : http://172.17.0.3:8080/subapp/quartz/test (后台匹配的路径)
}
}
3.6.将配置文件复制到容器conf.d 文件夹下
docker cp /usr/local/software/docker_nginx/nginx/conf.d/my.conf c63be682d8eb:/etc/nginx/conf.d
3.7.重启nginxr容器
docker stop 容器名/容器id
docker start 容器名/容器id
4.打包springboot jar包 、 编写Dockerfile 文件 metro-reservation-0.0.1.jar :打包文件名
4.1.Dockerfile 文件内容
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD metro-reservation-0.0.1.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
4.2.将Dockerfile文件、jar包上传到宿主机器上,执行一下命令,生成镜像文件
docker build -f ./Dockerfile -t app .
4.3.创建并启动容器 subapp :自定义容器名 subappdocker: 镜像名称
docker run -d -p 8081:8080 --name subapp subappdocker
踩坑记录:
1.centos 版本内核可能不支持最新版的docker 出现 runc报错:可以尝试执行一下语句
yum -y install libseccomp containerd
2.ssl 证书 新用户可以从阿里云服务器免费获取;
nginx 配置证书需要下载对应nginx证书
当时下了tomcat证书导致微信小程序体验版无法访问接口,出现如下错误:
证书来源: 缺失证书
状态: 错误:服务器缺少中间证书
3.检验容器之间的网络通信:
容器内安装ping命令
apt-get update
apt install iputils-ping
apt install net-tools
容器内安装telnet服务
apt-get update
apt-get install telnet
4.查看容器的ip地址:
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) 获取所有容器ip