docker部署踩的坑
前提
你需要拥有一个远程服务器或者是本地虚拟机
安装docker
Centos安装docker Install Docker Engine on CentOS | Docker Docs
部署后端
部署mysql
docker run -d -v 数据卷名称:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart always --name 镜像名称 mysql:8.0
部署redis
docker run -d -p 6379:6379 -v 数据卷名称:/data --restart always --name 镜像名称 redis:7.0 redis-server --appendonly yes
部署jar
docker run -d -v 数据卷名称:/usera/java -p 项目端口:项目端口 --restart always --name 镜像名称 --network 网络名称 java:openjdk-8u111 java -jar /usera/java/zl-admin-1.0-SNAPSHOT.jar "yml配置文件需要需要修改的地方--spring.datasource.url= "
这样部署并不能正常运行jar,原因:jar无法与mysql和redis建立连接通信。
需要建立网桥,将redis和mysql,jar处于同一个网桥
创建网桥
docker network create 网络名
将镜像加入到网桥中
docker network connect 网桥名 镜像名称
查看网桥信息
docker network inspect 网桥名
部署前端
对于不知道nginx.conf配置的我极其痛苦
准备:需要将自己的前端项目打包比如vue执行(npm run build)进行打包生成dist文件,传输到自己的服务器上去,可以在本地书写nginx.conf配置文件
docker run -d -p 项目端口:80 -v dist文件地址:/usr/share/nginx/html -v nginx.conf地址:/etc/nginx/nginx.conf --restart always --name vue-admin nginx:latest
天真的我以为这就结束战斗了,当我进行测试发现访问后端接口404.404表示地址不存在的状态码。问题直接锁定nginx转发地址错误。
经过了解nginx,知道nginx反向代理
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;
server_name 你的服务器地址;
charset utf-8;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#请求地址中含有/prod-api/的url将其转发
location /prod-api/ {
proxy_pass http://你的服务器地址和端口/; #注意端口后面这个斜杠,作用将/prod-api/代替(即去除前缀)
add_header backendCode $upstream_status;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Istoken $http_Istoken;
proxy_set_header Token $http_Token;
}
}
}
注意:修改nginx.conf一定要重新加载nginx.
docker exec -it nginx镜像名称 nginx -s reload
进阶:dockerFile
标签:log,项目,部署,nginx,网桥,proxy,体验,--,docker From: https://www.cnblogs.com/wzl66/p/17921966.html