- 顶: 6踩: 8749
一、docker-compose部署mysql
1、准备镜像
2、编写my.cnf配置文件
# 服务端参数配置[mysqld]user=mysql # MySQL启动用户default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎character-set-server=utf8mb4 # 设置mysql服务端默认字符集collation-server = utf8mb4_general_ci # 数据库字符集对应一些排序等规则,注意要和character-set-server对应pid-file=/var/lib/mysql/mysqld.pid # pid文件所在目录socket=/var/lib/mysql/mysqld.sock # 用于本地连接的socket套接字datadir=/var/lib/mysql # 数据文件存放的目录#bind-address=127.0.0.1 # MySQL绑定IPexpire_logs_days=7 # 定义清除过期日志的时间(这里设置为7天)# 设置client连接mysql时的字符集,防止乱码init_connect='SET NAMES utf8mb4'# 是否对sql语句大小写敏感,1表示不敏感lower_case_table_names=1# 执行sql的模式,规定了sql的安全等级, 暂时屏蔽,my.cnf文件中配置报错#sql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)transaction_isolation=READ-COMMITTED# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值explicit_defaults_for_timestamp=true#它控制着mysqld进程能使用的最大文件描述(FD)符数量。#需要注意的是这个变量的值并不一定是你设定的值,mysqld会在系统允许的情况下尽量获取更多的FD数量open_files_limit=65535# 允许最大连接数max_connections=200#最大错误连接数max_connect_errors=600#禁用DNS解析skip-name-resolve=1[client]default-character-set=utf8mb4 # 设置mysql客户端默认字符集
3、编写docker-compose.yml配置文件
version: '3'services: mysql: restart: unless-stopped image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.2 container_name: mysql8 ports: - "13306:3306" volumes: - ./conf/my.cnf:/etc/my.cnf - ./data/mysql:/var/lib/mysql - ./logs:/var/log/mysql environment: - TZ=Asia/Shanghai - LANG=en_US.UTF-8 - MYSQL_ROOT_PASSWORD=123456 logging: driver: "json-file" options: max-size: "10m" max-file: "3"
4、使用docker-compose up启动mysql
连接数据库,部署完成。
二、docker-compose部署redis
1、准备镜像
2、编写redis.conf配置文件
创建目录:
在conf目录下编写配置文件redis.conf配置文件:
# 关闭保护模式,允许远程连接protected-mode no# 开启AOF持久化appendonly yes # 密码# requirepass 123456
3、编写docker-compose.yml文件
version: '3'services: redis: # 服务名称 image: redis:latest # redis镜像版本 container_name: redis # 容器名称 ports: - 6379:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器 volumes: - ./conf/redis.conf:/etc/redis/redis.conf # 映射配置文件目录,宿主机:容器 - ./data:/data # 映射数据目录,宿主机:容器 restart: always # 容器开机自启 privileged: true # 获取宿主机root权限 command: ["redis-server","/etc/redis/redis.conf"] # 指定配置文件启动redis-server进程
4、启动容器
使用docker-compose up启动容器:
使用命令docker exec -it redis redis-cli,进入容器测试:
三、docker-compose部署springboot项目
1、下载jdk镜像
这里以 jdk8 为例(其他版本一样的操作),直接搜索 jdk8 镜像,选择一个下载即可。
目录结构如下:
2、编写docker-compose.yml文件
version: '3'services: demo: build: ./demo volumes: - ./demo/logs:/usr/local/logs ports: - 8082:8082
3、编写 Dockerfile
# 基础镜像FROM dockette/jdk8# 拷贝jar包到容器中COPY jx-project-manager.jar /usr/local/demo.jar# 容器工作目录WORKDIR /usr/local# 设置字符集ENV LANG C.UTF-8# 启动命令(注意,这里一定要用ENTRYPOINT,不能用CMD)ENTRYPOINT ["java", "-jar", "/usr/local/demo.jar"]
4、启动容器
启动成功使用接口测试工具测试。
四、docker-compose部署vue项目
1、编写Dockerfile文件
# nginx镜像FROM nginx# 维护者信息MAINTAINER gaoyt "ywz@qq.com"# 移除nginx容器的default.conf文件、nginx配置文件# RUN rm /etc/nginx/conf.d/default.conf# RUN rm /etc/nginx/nginx.conf# ENV PROXY_HOST ${ PROXY_HOST}# ENV PROXY_IP ${ PROXY_IP}# 把主机的nginx.conf文件复制到nginx容器的/etc/nginx文件夹下COPY ./nginx.conf /etc/nginx/# 拷贝前端vue项目打包后生成的文件到nginx下运行COPY ./dist /usr/share/nginx/html# 暴露9000端口EXPOSE 9000# 注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。# RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache# 使用daemon off的方式将nginx运行在前台保证镜像不至于退出CMD ["nginx", "-g", "daemon off;"]
2、编写nginx.conf配置文件
user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;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; keepalive_timeout 65; # include /etc/nginx/conf.d/*.conf; server { listen 9000; charset utf-8; server_name 192.168.197.131;# vue项目所在的服务器地址 # start -------------------------------- location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } location /api/{ proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.197.131:8800/; # 后端服务器地址 } # end ---------------------------------- error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }}
3、docker-compose.yml文件
version: '3'services: vue-program: # image: imageName container_name: vue build: ./demo # Dockerfile所在目录 environment: TZ: Asia/Shanghai # 依赖于api容器,被依赖容器启动后此web容器才可启动 depends_on: - webimage extra_hosts: - "192.168.197.131:192.168.197.131" ports: - "9000:9000"
4、启动容器
使用docker-compose up启动:
通过浏览器访问项目:
Docker学习(6):Docker Compose部署案例
人参与 | 时间:2025-06-24 12:30:45
相关文章
- 苹果iOS19 UI全改?重新设计图标菜单?
- 复古射击游戏哪个好玩? 十大经典复古射击游戏排名
- 使用chatgpt实现微信聊天小程序(秒回复),github开源(附带链接)
- 洛夫克拉夫特式游戏哪个最好玩? 流行的洛夫克拉夫特式游戏库存
- 从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓
- 战锤 40K游戏下载 下载量高的战锤 40K游戏排行榜
- 奔跑游戏哪个好玩? 推荐下载量高的奔跑游戏
- 使用 Faster Whisper 和 Gradio 实现实时语音转换文本
- 大全社交推理游戏 热门社交推理游戏排名
- 【ChatGPT】JeecgBoot v3.6.3 AI版本发布,企业级低代码平台
评论专区