docker compose + nginx 部署前后分离项目
一、在服务器上建立项目目录
/app$ mkdir demo demo/nginx demo/server
/app$ cd demo
二、将打包好的dist文件夹及jar包上传
/app/demo/nginx$ ls
dist
/app/demo/server$ ls
java-demo-1.0.jar
三、启动nginx容器并拷贝配置文件到宿主机
#1、启动容器
/app/demo/nginx$ docker run -d -p 80:80 --name nginx nginx
#2、拷贝配置文件到宿主机
/app/demo/nginx$ docker cp nginx:/etc/nginx/conf.d/default.conf ./
/app/demo/nginx$ ls
default.conf dist
#3、删除容器
/app/demo/nginx$ docker rm -f nginx
四、编写nginx配置文件
#1、编写配置文件
/app/demo/nginx$ vim default.conf
##########以下是配置文件内容#################
server {
listen 80; # 监听80端口
listen [::]:80;
server_name localhost;# 监听本机
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;#资源根路径
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 配置地址拦截转发,解决跨域验证问题
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://server:1011; #转发地址,server是后面编写的docker-compose.yml中服务端
rewrite "^/api/(.*)$" /$1 break; #重写路径,如:http://localhost:2011/api/test => http://localhost:2011/test
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
五、编写Dockerfile
#编写nginx的Dockerfile
/app/demo/nginx$ vim Dockerfile
#################以下是nginx的Dockerfile内容##############
FROM nginx:latest
COPY ./dist /usr/share/nginx/html
COPY ./default.conf /etc/nginx/conf.d/default.conf
#编写server的Dockerfile
/app/demo/nginx$ cd /app/demo/server/
/app/demo/nginx$ vim Dockerfile
#################以下是server的Dockerfile内容##############
FROM openjdk:11
MAINTAINER maintainer="xxxxxxx@163.com"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY ./*.jar /app.jar
EXPOSE 1011
CMD java -jar -Xms512m -Xmx512m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC app.jar
六、编写docker-compose.yml文件
#进入项目目录
/app/demo/nginx$ cd /app/demo
#编写docker-compose.yml
/app/demo$ vim docker-compose.yml
#################以下是docker-compose.yml内容##############
version: "3"
services:
server:
build: ./server
image: demo-server
nginx:
build: ./nginx
image: demo-nginx
ports:
- "80:80"
7、docker compose启动,并访问