当前位置:   article > 正文

使用docker搭建frp在云服务器上调用本地服务器的代码_frp docker

frp docker

前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务。

获取frp的压缩包

访问下面这个网页Releases · fatedier/frp (github.com),这里下载最新版的v0.50.0的包。

 

可以看到这里有很多版,我服务器的CPU是x86_64架构(linux可以使用uname -a 这个命令查看CPU架构),选择的frpServer是frp_0.50.0_linux_amd64.tar.gz这个版本, 客户端是Windows系统所以frpClient 是frp_0.50.0_windows_amd64.zip这个版本。

Server端部署

1.发送到服务器上

使用以下命令将服务端需要的包发到远程服务器上

scp C:\Users\admin\Downloads\frp_0.50.0_linux_amd64.tar.gz root@ip:/home/docker/frp
2.创建指定文件
#创建frps.ini文件
cd /home/docker/frp && vim frps.ini
​
#编写配置  [common] 也需要保留
​
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# http服务需要使用
vhost_http_port = 8877
# 授权码,请改成更复杂的
# 这个token之后在客户端会用到
token = 123456
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
​
# frp日志配置
log_file = ./frps.log
log_level = info
log_max_days = 3              
3.创建dockerfile
vi dockerfile
​
FROM ubuntu
MAINTAINER zzy <358343917@qq.com>
​
ARG VERSION=0.50.0
​
WORKDIR /tmp
​
COPY ./frp_${VERSION}_linux_amd64.tar.gz frp_${VERSION}_linux_amd64.tar.gz
RUN set -x \
    && tar -zxvf frp_${VERSION}_linux_amd64.tar.gz \
    && mv frp_${VERSION}_linux_amd64 /var/frps \
    && mkdir -p /var/frps/conf
​
COPY ./frps.ini /var/frps/conf/frps.ini
​
VOLUME /var/frps/conf
​
WORKDIR /var/frps
ENTRYPOINT ./frps -c ./conf/frps.ini

解释一下上面的意思 从 /home/docker/frp文件夹下复制frp文件到docker容器中/tmp目录下,在容器内解压该文件并且移动到/var/frps路径下,在容器内创建文件夹/var/frps/conf,将/home/docker/frp/frps.ini文件复制到容器内 /var/frps/conf/frps.ini 这个文件。挂载一个卷,容器启动时默认执行 /var/frps/frps -c /var/frps/conf/frps.ini

4.构建dockerimage
#注意 name = 名称 tag = 版本号  name:tag后面有个.  代表当前目录, 也可以修改成 /home/docker/frp
docker build -t name:tag .
#示例
docker build -t zzy/frp:0.50.0 .
5.编写docker-compose

因为要将conf目录挂载在/home/docker/frps/conf/目录下,所以首先将/home/docker/frp下的frps.ini复制到 /home/docker/frps/conf/目录下

mv /home/docker/frp/frps.ini /home/docker/frps/conf/
version: '3.1'
    services:
        frp:
            image: zzy/frp:0.50.0
            container_name: frp
            volumes:
              - /home/docker/frps/conf:/var/frps/conf
            ports:
              - 7000:7000
              - 7500:7500
              - 8877:8877
            restart: always

启动

    docker-compose up -d frp

这个时候访问 ip:7500 ,输入账号密码后,应该就能看到这个页面了

 

如果是云服务器的话,记得开放7500端口

Client端部署

client就很简单了, 复制下下面的配置到frpc.ini文件中然后使用 cmd转到对应文件夹 输入 frpc.exe 启动。

[common]
server_addr = 云服务器地址
server_port = 7000
token = 123456
log_file = ./frpc.log
log_level = info
​
[home]
#连接方式  http
type = http
#内网服务器地址
local_ip = 127.0.0.1
#内网服务器端口
local_port = 8080
#外网HTTP端口
remote_port = 8877
#外网的域名 通过访问这个域名和端口找到这个服务
custom_domains = www.zzy1blog.cn
​

启动成功的话,我们登录管理页面,就能看到连接的服务了。如下:

 

编写本地服务测试类

@Slf4j
@Controller
@RequestMapping(value = "/test")
@ResponseBody
public class TestController {
​
    @GetMapping("/message")
    public void testNoneIntercept(HttpServletRequest httpServletRequest, HttpServletResponse response,String message) throws Exception {
        response.setContentType("text/event-stream");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write("来自本地服务器"+message);
    }
​
}

application.yaml配置

server:
    port: 8080

访问: www.zzy1blog.cn:8877/frp/servers?message=访问本地服务器

 

反代成功

配置nginx反代frp

nginx配置

http {
  server {
     listen 80;
     #请填写绑定证书的域名
     server_name zzy1blog.cn;
​
     location /frp/servers {
        proxy_pass http://localhost:8877;
        proxy_set_header Host       $host;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
 }
​

重启nginx容器

docker-compose stop nginx
​
docker-compose up -d nginx

访问 http://www.zzy1blog.cn/frp/servers?message=访问本地服务器2

搞定!

文章源地址 :使用docker搭建frp在云服务器上调用本地服务器的代码 – 我觉得大阳很强的blog

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/403275
推荐阅读
相关标签
  

闽ICP备14008679号