用docker容器在nginx上部署前端項目,且解決跨域問題
准備工作
1、前端項目打包 ,在/home 解壓,存於/home/dist內
2、后端項目打jar包,使用jar命令跑起來
宿主機操作
rar解壓工具:
下載地址https://files.cnblogs.com/files/whiplasher/rarlinux-x64-5.9.0.tar.gz
tar -xzpvf rarlinux-x64-5.7.1b2.tar.gz
新建數據卷名為nginx
docker volume create nginx
docker volume ls
docker volume inspect nginx
初始化一個叫nginx的容器,-d后台運行,-p端口映射,docker宿主機的8089端口映射到容器的80端口
-v參數 把dist下的靜態文件映射到nginx的html文件夾,配置文件映射到對應的默認配置文件,把數據卷nginx綁定的主機文件夾(/var/lib/docker/volumes/nginx/_data)
映射到nginx容器的 /etc/nginx文件夾
docker run --name nginx -d -p 8089:80 -v /home/dist:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v nginx:/etc/nginx nginx
docker ps 查看運行的容器
進入主機掛載的文件夾
cd /var/lib/docker/volumes/nginx
cd _data/
復制靜態文件夾到掛載的文件夾
cp /home/dist .
進到存放配置文件的文件夾,編輯配置文件
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 ip;
location / {
proxy_pass http://ip:8081/api/; #ip為你的后端ip地址
}
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|html)$ {
root /etc/nginx/dist;
expires 30d;
}
}
}
進入nginx容器的文件夾
/data/nginx/conf
1、docker exec -it nginx(容器名) /bin/bash
2、cd /etc/nginx
3、ls 可查看到剛剛復制的主機文件夾中的靜態文件
重啟nginx容器以更新配置
docker ps
docker restart XXX