docker、nginx、jar

windows修改nginx配置文件后,重启nginx命令

之前每次改配置文件,为了让修改后的配置生效都要在任务栏中找nginx杀进程,太麻烦了

nginx -s reload

java -jar 参数不生效,是因为main方法没有加args

java -jar -Dfile.encoding=utf-8 /emqx.jar --server.port=9001

Linux下执行Shell脚本出现$‘\r‘: command not found解决方法

原因:
是Windows和Linux的.sh脚本文件格式不同,如果在脚本中有空行,脚本是在Windows下进行编辑之后上传到linux上去执行的话,就会出现这个问题。
windows 下的换行符是\r\n,而 linux 下的换行符是\n,没有识别/r,所以会导致上述的报错,这个属于脚本编码的问题。
解决方法:(运行以下命令即可修改该脚本格式)
在start.sh对应脚本目录下,执行以下命令即可。
vim start.sh 
:set ff=unix
:wq

#!/bin/bash

镜像制作完成后输入
docker run -d --privileged=true -p 10081:80 -v /root/centos/start.sh:/start.sh -v /root/centos/html:/usr/local/nginx/html -v /root/centos/nginx.conf:/usr/local/nginx/conf/nginx.conf -v /root/centos/emqx.jar:/emqx.jar  c7-jdk8-nginx1.8:v1  /start.sh
执行上述命令后,使用docker ps 发现容器并未运行,
继续使用docker logs xxx(容器id)
显示如下信息:
standard_init_linux.go:190: exec user process caused "exec format error"
原因
sh文件里缺少 #!/bin/bash
#!/bin/bash

/usr/local/nginx/sbin/nginx

java -jar -Dfile.encoding=utf-8 /emqx.jar --server.port=9001

 nginx conf

worker_processes  1;
events {
    worker_connections  1024;
}
#http块
http {
 #http全局块
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
  #server块
    server {
   #server全局块
        listen       80;#监听端口
        server_name  192.168.44.128#监听地址,填自己服务器ip 0.0.0.0 不做限制
        charset utf-8;
#location块很重要!!!!
    location / {
        root  /usr/share/nginx/html/dist;#前端资源路径
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
        }
    # 配置地址拦截转发,解决跨域验证问题
    location /prod-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://192.168.44.128:8080/;#后端转发地址,你的服务器ip+端口 以斜杠结尾,会去掉请求路径中的prod-api,去掉斜杠,路径不做处理
        }
        error_page   500 502 503 504  /50x.html;
            location = /50x.html {
               root   html;
        }
    }
    include /etc/nginx/conf.d/*.conf;
}

Docker容器中的/etc/hosts文件与--add-host

docker run --name api-dist3 --add-host=apihost:192.168.4.104 -d -p 934:10001 api-dist:v3
server {
    listen       10001;
    server_name  0.0.0.0;

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    client_max_body_size  50m;
    location / {
        root   /usr/share/nginx/html/dist/;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }

    location /tg5000-api/ {
        proxy_ignore_client_abort on;
        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_read_timeout 600s;
        proxy_pass   http://apihost:9002/api/;
    }
}

 

给start.sh添加权限

chmod 777 start.sh

 

posted @ 2022-11-21 17:27  1156740846  阅读(83)  评论(0编辑  收藏  举报