# 敏捷软件开发 **Repository Path**: pjchub/agile-software-development ## Basic Information - **Project Name**: 敏捷软件开发 - **Description**: Docker部署Git测试 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-30 - **Last Updated**: 2024-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 1. 本项目为使用docker-compose部署springboot3和vue3项目以及使用git仓库进行版本控制的测试 2. 前端项目文件为vue-homework1 3. 后端项目文件为BookSearch 4. docker中前后端项目文件及配置文件夹为project(注意!需要对配置进行修改并替换本文件夹中的.jar后端项目文件及html中前端项目文件为你的) # 截图与视频 视频https://gitee.com/pjchub/agile-software-development/blob/master/movie.mp4 ![image-20240508183540691](image-20240508183540691.png) ![image-20240508183559770](image-20240508183559770.png) # 使用docker部署项目 ## 前端配置修改 1. 修改vite.config.ts中axios重定向配置中的ip地址为服务器ip地址 ```typescript //其他代码省略 server:{ port: 9091, proxy:{ '/api':{ target:'http://101.133.135.157:9090',/*将ip地址替换为服务器ip地址*/ changeOrigin:true, rewrite:(path)=>path.replace(/^\/api/,'') } } } ``` 2. ` npm run build` 打包前端项目,将前端项目打包好的dist文件夹中的文件复制到nginx中html文件夹下 ## 后端配置修改 1. 修改后端配置application.yml文件中mysql服务的ip地址为服务器ip,redis服务主机为服务器中redis容器名 ```yml server: port: 9090 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://101.133.135.157:3306/mjwork?useUnicode=true&useSSL=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: 123456 data: redis: host: redis port: 6379 mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 2. 打包后端项目,将后端.jar文件放在后端项目backend文件夹中,并修改.jar文件名为project-test ## docker 相关配置 ### 映射文件目录创建 创建相关文件夹,目录结构如下 ![image-20240501144008966](image-20240501144008966.png) ### Dockerfile ``` FROM openjdk:21 ADD project-test.jar /project-test.jar EXPOSE 9090 ENTRYPOINT ["java", "-jar", "project-test.jar"] ``` ### redis 配置文件 ```conf # 关闭保护模式,允许远程连接 protected-mode no # 开启AOF持久化 appendonly yes ``` ### nginx配置文件 ```conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 101.133.135.157; #修改ip地址为服务器ip location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } location /api{ rewrite /api/(.*) /$1 break; proxy_pass http://backend-project:9090; #修改后端服务地址为后端服务容器名:端口号 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } ``` ### mysql数据库初始化 在用docker-compose 完成部署后,先对mysql进行初始化,创建需要的表格等内容。 ``` docker exec -it mysql bash mysql -u root -p #输入密码 mysql> CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, nickname VARCHAR(255) NULL, gender VARCHAR(10) NULL, birthday DATETIME NULL ); CREATE TABLE todos ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, name VARCHAR(255) NOT NULL, created_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, completed TINYINT(1) DEFAULT 0 NULL, completed_time TIMESTAMP NULL, permission VARCHAR(50) DEFAULT 'public' NULL, FOREIGN KEY (user_id) REFERENCES user(id) ); CREATE TABLE books ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NULL, writer VARCHAR(255) NULL, time DATE NULL, number INT NULL ); ``` ## 安装docker 1. 告诉Linux安装地址之前需要先通过yum命令联网安装需要的包: ``` yum install -y yum-utils ``` 2. 告诉Linux,Docker的安装地址: ``` yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo ``` 3. 安装docker ``` yum install docker-ce docker-ce-cli containerd.io ``` 4. 启动docker ``` systemctl start docker ``` 5. 配置Docker阿里云镜像加速 ``` # 根据虚线逐条执行,不要一起执行 mkdir -p /etc/docker ================================================================= tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"] } EOF ================================================================= systemctl daemon-reload ================================================================= systemctl restart docker ``` 6. ##### 安装DockerCompose ​ 由于从镜像拉取docker-compose下载速度较慢,这里建议从docker-compose的github地址直接下载,然后将其上传到虚拟机/usr/local/bin文件夹中 ​ 下载地址:https://github.com/docker/compose/releases ``` # 分配权限 sudo chmod +x /usr/local/bin/docker-compose ``` ## docker-compose.yml文件 docker-compose.yml 文件 ```yml version: '3' services: # Nginx nginx: image: nginx:latest container_name: nginx ports: - 80:80 - 443:443 volumes: - /opt/project/nginx/html:/usr/share/nginx/html - /opt/project/nginx/log:/var/log/nginx - /opt/project/nginx/nginx.conf:/etc/nginx/nginx.conf - /opt/project/ssl:/etc/nginx/ssl privileged: true # MySQL mysql: image: mysql:8.0 container_name: mysql environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 123456 #数据库密码 MYSQL_DATABASE: mjwork #你的数据库名 ports: - 3306:3306 volumes: - /opt/project/mysql/data:/var/lib/mysql - /opt/project/mysql/conf:/etc/mysql/conf.d - ./init:/opt/project/mysql/init/ privileged: true restart: always # Redis redis: image: redis:latest container_name: redis ports: - 6379:6379 environment: TZ: Asia/Shanghai volumes: - /opt/project/redis/conf/redis.conf:/etc/redis/redis.conf - /opt/project/redis/:/data privileged: true restart: always command: ["redis-server","/etc/redis/redis.conf"] # 后端JAR backend-project: image: backend-project #你的镜像名 container_name: backend-project #你的容器名 build: ./backend # 运行Dockerfile ports: - 9090:9090 depends_on: # mysql,redis启动后在启动 - mysql - redis ``` ## 启动docekr-compose完成部署 ``` cd /opt/project docker-compose up -d ```