当前位置: 首页 > news >正文

centos7使用docker-compose部署项目

目录

1、多容器运行环境配置(docker-compose.yml)

2、创建项目Dockerfile文件(启动遇到找不到类问题,原因是模块包版本错误)

3、创建挂载目录

4、配置nginx.conf

5、通过docker-compose.yml脚本启动

6、acme操作

7、相关操作命令

8、验证结果

9、注意事项


1、多容器运行环境配置(docker-compose.yml)
version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123456volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- test-netredis:image: rediscontainer_name: redisports:- "6379:6379"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123456volumes:- "./myredis/redis:/usr/local/etc/redis"- "./myredis/redis/data:/usr/local/etc/redis/data"- "./myredis/data:/data"networks:- test-netacme-sh:  image: neilpang/acme.sh  container_name: acme.sh  command: daemon  environment:  - Ali_Key=LTAI5xxxxq5fMExxxxpc2  - Ali_Secret=Q3xxxxx7Bd1XzxxxxXPpitQa  volumes:  - "./nginx/certs:/acme.sh"  - "/var/run/docker.sock:/var/run/docker.sock"  network_mode: hostnginx:image: nginxcontainer_name: nginxports:- "80:80"- "8090:8090"- "8091:8091"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"- "./nginx/certs:/etc/nginx/certs"  - "./nginx/logs:/var/log/nginx"networks:- test-netdepends_on:  - acme-shlifecolor:  build:  context: .  dockerfile: Dockerfile  container_name: lifecolor  ports:  - "8080:8080"  networks:  - test-net  depends_on:  - mysql  - redis
networks:test-net:name: test-net
2、创建项目Dockerfile文件(启动遇到找不到类问题,原因是模块包版本错误)
FROM openjdk:17
WORKDIR /
COPY ./lifecolor-web.jar lifecolor-web.jar
CMD ["java", "-jar", "lifecolor-web.jar"]
3、创建挂载目录
mkdir -p /data/nginx
cd /data/nginx
touch nginx.conf # 该文件必须先创建
4、配置nginx.conf
  • 未安装acme适用: 无ssl证书模版
worker_processes  1;pid /run/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/json;sendfile        on;keepalive_timeout  65;server {listen            80;listen            [::]:80;server_name       www.ahuaya.com;# 前端静态资源location / {root   /usr/share/nginx/html/lifecolor;try_files $uri $uri/ /index.html;# 不加刷新会404index  index.html index.htm;}# 转发后端location ^~/prod-api/ {proxy_pass http://lifecolor:8080/;}}
}
  • 安装acme适用: 有ssl证书模版
user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;server {listen  80;listen  [::]:80;server_name  www.xxx.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen  443 ssl;server_name  xxx.com;# 注意证书文件名字和位置,是从/etc/nginx/下开始算起的ssl_certificate        /etc/nginx/certs/${server_name}/fullchain.cer;ssl_certificate_key    /etc/nginx/certs/${server_name}/${server_name}.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {proxy_set_header   X-Real-IP         $remote_addr;proxy_set_header   Host              $http_host;proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;root   /usr/share/nginx/html/lifecolor;try_files $uri $uri/ /index.html;# 不加刷新会404index  index.html index.htm;}location ^~/prod-api/ {proxy_pass http://lifecolor:8080/;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
}
5、通过docker-compose.yml脚本启动
# 将docker-compose.yml文件上传到data目录后打开命令窗口
cd /data
docker compose -f ./docker-compose.yml up -d # 后台运行多个容器
6、acme操作
## 注册证书服务商账号
docker exec acme.sh --register-account -m flxxxx5@163.com## 申请www.ahuaya.com证书
docker exec acme.sh acme.sh --issue --dns dns_ali -d xxxx.com -d *.xxxx.com --force --dnssleep# 重启nginx
docker compose -f ./env-compose.yml restart nginx# 执行命令
crontab -e# 每天凌晨12点执行任务续签
0 0 * * * docker exec acme.sh --cron
7、相关操作命令
docker ps # 列出运行中容器
docker ps -a # 查看所有容器
docker inspect nginx # 查看容器详细信息
docker exec -it nginx bash # 进入容器
exit # 退出容器docker rm -fv mysql redis # 删除容器及创建的匿名数据卷
docker images # 列出镜像
docker rmi -f mysql redis nginx # 删除镜像docker compose down # 停止并删除多个容器
docker compose exec mysql bash # 进入容器
8、验证结果
# 访问地址成功则表示启动成功
http://www.xxxx.com
http://8.xx.x.24:80
9、注意事项
  • 挂载的nginx.conf必须先创建文件,否则docker compose启动报错

  • 服务器要开放80端口,否则访问报错

  • 域名要配置解析到服务器,否则访问报错

  • acme的environment配置不能加引号,加了生成ssl证书报错

  • centOs内核版本过低可能会导致nginx容器映射问题,具体表现为在容器内正常,容器外不能访问

# 容器内获取nginx页面正常
docker exec -it nginx bash
curl http://localhost:80 
exit;# 容器外获取报错
curl http://localhost:80 # 解决方案:升级内核
https://www.cnblogs.com/xzkzzz/p/9627658.html
shutdown -r -t 3 # 3秒后重启

http://www.dtcms.com/a/288360.html

相关文章:

  • 《Linux 环境下 NTP 时间同步与 SSH 免密登录配置实战》
  • 树的基础知识总结
  • 移动硬盘无法读取怎么办?数据还可以抢救回来
  • STC增强型单片机寄存器 PWM EEPROM TMOD TCON
  • 数据结构的文件操作
  • scalelsd 笔记 线段识别 本地部署 模型架构
  • Spring7个事务传播行为和5个隔离级别
  • Java-Lambda表达式
  • 【Linux】Linux中重定向 及 dup2 详细讲解
  • Stream API
  • 2023 年 5 月青少年软编等考 C 语言八级真题解析
  • 本地安装部署Unstructured-api
  • ADC选型设计
  • SpringBoot项目打包加部署方案
  • Datawhale 7月学习
  • SCSAI工业智能体的核心特征
  • Xss-labs 1-8以及利用python自动sq8注入
  • linux cpu频率和AVS调压等级
  • 板子 5.29--7.19
  • 函数式编程和命令式编程
  • Python爬虫实战:研究psd-tools库相关技术
  • UI 程序退出卡顿问题分析:从真实案例深入理解退出清理路径负载问题
  • 【工具变量】地级市城市包容性绿色增长数据(2011-2023年)
  • vue3使用KeepAlive组件及一些注意事项
  • [spring6: Advice Advisor Advised]-快速理解
  • 基于深度学习的火灾智能检测系统设计与实现
  • 零基础学习性能测试第二章-linux服务器监控:网络iftop
  • HTTP与HTTPS技术细节及TLS密钥交换与证书校验全流程
  • 马走日题解
  • LeetCode Hot100【7. 整数反转】