近期把项目部署在服务器上差点把我给整崩,现在重新整理一下部署流程。这也算是做一次记录,防止以后忘记了。
代码如下(示例):
devServer: { port: 端口号, proxy: { '/URL': { target: 'http://“后端IP:后端的端口号', // 后端 } } }
代码如下(示例):
* 下面是docker-compose.yml
version: '3' services: web-name: # 服务名称,用户自定义 image: nginx:latest # 镜像版本 container_name: '容器名' ports: …… …… - /…… - /…… …… redis: # 服务名 image: …… …… web-server: # 服务名 container_name: '容器名' build: . ports: …… mysql: # 服务名 image: …… ports: …… environment: ……
主要是将下面springboot配置文件里的IP地址修改成上面服务名
#数据库连接 # MySQL spring.datasource.url=jdbc:mysql://服务名(上面docker-compose.yml):3306/…… spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.username=# spring.datasource.password=# # Redis spring.redis.host= 服务名(同上) spring.redis.port=6379 spring.redis.password=cl20030525
在IDEA的控制台里直接输入:npm run build
在maven里点clean----compile—package
* 注:这里的dist和web-server.jar是前后端项目的包
这里的Dockerfile之后直接通过docker-compose直接构建,不需要 docker build
FROM java:8 # 基础镜像 ADD web-server.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]
nginx内容
server { listen 80; #这里监听的容器是端口 server_name ***.**.** localhost; #这里主要写IP或域名(服务器或虚拟机的)注:多个可以用空格隔开 location / { #URL root /usr/share/nginx/html; try_files $uri $uri/ /index.html last; index index.html index.htm; } location /URL { #URL地址的内容 如 http://**:**/URL/ proxy_pass http://101.43.45.79:9999; #代理转发 proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
使用 “ docker-compose up -d ” 后台运行容器 (注:需要在docker-compose.yml文件下执行命令)
代码如下(示例):
version: '3' services: web-name: # 服务名称,用户自定义 image: nginx:latest # 镜像版本 container_name: '容器名' ports: - 3000:80 # 暴露端口 volumes: # 挂载 - /home/ly/docker-boot/dockerweb/dist/:/usr/share/nginx/html #前端项目的包挂载到nginx上 - /home/ly/docker-boot/dockerweb/nginx.conf:/etc/nginx/conf.d/nginx.conf #挂载nginx配置文件 privileged: true redis: # 服务名 image: redis:latest command: redis-server --requirepass ***** # 设置Redis的密码 web-server: # 服务名 container_name: '容器名' build: . # 这里是直接构建Dockerfiler ports: - 9999:8080 mysql: # 服务名 image: mysql:5.7.36 ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=root #设置MySQL用户的密码
使用 docker ps 可以查看所有运行中容器(注:有些容器没出现可以用 “ docker ps -a ” 找到,出现这种情况可能是容器内部出错,使用 “docker logs -f 容器ID或容器名 ” 可查看错误)
使用 “docker cp 文件名 容器ID:路径” 复制进容器里(注:将文件复制出来只需交换文件名与容器ID和路径即可)
例:docker cp project.sql 35bf7e18ce27:/
进入容器使用:docker exec -it 容器ID /bin/bash
导入文件:
root@35bf7e18ce27:/# mysql -u root -p < projectdb.sql #一般默认为root Enter password: #这里填docker-compose里的密码
一定一定一定要重启前后端容器,我就是在这里未重启,导致好几天前端请求不到后端。
重启命令:
docker-compose 为:docker-compose restart 前端服务名 后端服务名(就是上面的docker-comopse.yml里的服务名)
docker 为:docker restart 容器ID (不确定多个容器能否使用空格隔开)