使用docker部署SSM的服務器,踩了一些坑,做一下記錄,以此存照。
1、配置docker-compose.yml
version: '3'
services:
eam-application:
build:
context: ../eam
dockerfile: Dockerfile
# 指定容器名稱
container_name: eam-application
# 重啟機制
restart: always
# hub地址,image版本
image: eam-application
privileged: true
volumes:
- ../eam:/eam:rw
- /etc/localtime:/etc/localtime
# 訪問端口
ports:
- "8087:8087"
environment:
# 指定時區
- TZ="Asia/Shanghai"
eam-nginx:
# 1)鏡像名
image: nginx
# 2)自定義容器名
container_name: eam-nginx
# 3)Docker中日志聲明 (此處配置為none)
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
# 4)日志路徑映射 ro 只讀--訪問模式; rw 讀寫
privileged: true
restart: always
volumes:
#compose文件與nginx文件夾目錄結構必須一致
- ./eam-nginx/eam-front:/usr/share/nginx/dist:rw #前端靜態文件目錄(項目位置)
# - ./xihe-nginx/nginx:/etc/nginx:rw #nginx配置文件
- ./eam-nginx/nginx.conf:/etc/nginx/nginx.conf
- ./eam-nginx/conf.d:/etc/nginx/conf.d
- ./logs/eam-nginx:/var/log/nginx:rw #日志文件
# 5)環境配置
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- JVM_OPTS=-Xmx512m -Xms512m -XX:MaxPermSize=256m
#extra_hosts:
# - www.test.com:119.28.137.66
# 6)端口映射
ports:
- "8001:80"
2、配置Dockerfile
FROM java:8
MAINTAINER Ling
# WORKDIR 工作目錄
WORKDIR /home/eam/
# RUN 設置時區
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# ADD 添加jar和yml配置文件到鏡像
ADD eam-application.jar /eam-application.jar
ENTRYPOINT ["java","-Xmx512M","-Xms512M","-XX:MaxPermSize=256M","-Dloader.path=./lib/","-jar","/eam-application.jar"]
3、首先啟動一次docker,拉取nginx,並映射相關的文件夾,之后對nginx的進行設置。
4、配置nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 70;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
5、設置sever的conf
client_max_body_size 50m;
server {
listen 80;
server_name localhost,127.0.0.1, 192.168.2.242;
# gzip config
gzip on;
gzip_min_length 200;
gzip_buffers 4 16k;
gzip_comp_level 6;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/json;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_proxied any;
location / {
#add_header Access-Control-Allow-Origin *;
#add_header Access-Control-Allow-Headers X-Requested-With;
#add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
#proxy_pass http://192.168.2.242:3100;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/dist/;
index index.html;
#if (!-e $request_filename) {
# rewrite ^(.*)$ /index.html?s=$1 last;
# break;
#}
}
location /api {
#proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://192.168.2.242:8087; #設置后台轉發地址
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
6 、將前端打包好的文件放到設置好的路徑。使用docker-compose up -d 啟動服務
