爱生活,爱分享


Docker安装frp

haiten 2019-12-20 617浏览 0条评论
首页/正文
分享到: / / / /

一、准备相关软件包

wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz -O frp_0.27.0_linux_amd64.tar.gz

二、编写 Dockerfile 文件

nano Dockerfile
-----------------------------------------------------------------------------------------
FROM hub.c.163.com/public/centos:latest

MAINTAINER yanghaiteng 13702721963@139.com

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV FRP_PATH=/opt/frp \
SUBDOMAIN_HOST= \
TOKEN= \
ALLOW_PORTS= \
BIND_ADDR= \
BIND_PORT= \
BIND_UDP_PORT= \
KCP_BIND_PORT= \
VHOST_HTTP_PORT= \
VHOST_HTTPS_PORT= \
DASHBOARD_ADDR= \
DASHBOARD_PORT= \
DASHBOARD_USER= \
DASHBOARD_PWD=

EXPOSE 7000 7001 80 443 7500

ADD frp_0.27.0_linux_amd64.tar.gz /opt/

RUN mv /opt/frp_0.27.0_linux_amd64 ${FRP_PATH} \
&& cp ${FRP_PATH}/frps_full.ini ${FRP_PATH}/frps_active.ini \
&& cp ${FRP_PATH}/frpc_full.ini ${FRP_PATH}/frpc_active.ini

WORKDIR ${FRP_PATH}

COPY frp-entrypoint.sh /usr/bin/

RUN chmod 755 /usr/bin/frp-entrypoint.sh
ENTRYPOINT ["/usr/bin/frp-entrypoint.sh"]
-----------------------------------------------------------------------------------------

三、编写 docker 容器启动文件

nano frp-entrypoint.sh
-----------------------------------------------------------------------------------------
#!/bin/bash
#set -e
if [ "$1" = "server" ] ; then
  if [ -n "$SUBDOMAIN_HOST" ] ; then  
    sed -i "s|^subdomain_host = .*$|subdomain_host = ${SUBDOMAIN_HOST}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$TOKEN" ] ; then  
    sed -i "s|^token = .*$|token = ${TOKEN}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$ALLOW_PORTS" ] ; then  
    sed -i "s|^allow_ports = .*$|allow_ports = ${ALLOW_PORTS}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$BIND_ADDR" ] ; then  
    sed -i "s|^bind_addr = .*$|bind_addr = ${BIND_ADDR}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$BIND_PORT" ] ; then  
    sed -i "s|^bind_port = .*$|bind_port = ${BIND_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$BIND_UDP_PORT" ] ; then  
    sed -i "s|^bind_udp_port = .*$|bind_udp_port = ${BIND_UDP_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$KCP_BIND_PORT" ] ; then  
    sed -i "s|^kcp_bind_port = .*$|kcp_bind_port = ${KCP_BIND_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$VHOST_HTTP_PORT" ] ; then  
    sed -i "s|^vhost_http_port = .*$|vhost_http_port = ${VHOST_HTTP_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$VHOST_HTTPS_PORT" ] ; then  
    sed -i "s|^vhost_https_port = .*$|vhost_https_port = ${VHOST_HTTPS_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$DASHBOARD_ADDR" ] ; then  
    sed -i "s|^dashboard_addr = .*$|dashboard_addr = ${DASHBOARD_ADDR}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$DASHBOARD_PORT" ] ; then  
    sed -i "s|^dashboard_port = .*$|dashboard_port = ${DASHBOARD_PORT}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$DASHBOARD_USER" ] ; then  
    sed -i "s|^dashboard_user = .*$|dashboard_user = ${DASHBOARD_USER}|g" ${FRP_PATH}/frps_active.ini
  fi
  if [ -n "$DASHBOARD_PWD" ] ; then  
    sed -i "s|^dashboard_pwd = .*$|dashboard_pwd = ${DASHBOARD_PWD}|g" ${FRP_PATH}/frps_active.ini
  fi
  ./frps -c ./frps_active.ini
else 
  ./frpc -c ./frpc_active.ini
fi

FRP_LOG_FILE="frps.log"
tail -f "$FRP_LOG_FILE"
-----------------------------------------------------------------------------------------

四、执行 Dockerfile 制作镜像

docker build -t yht/centos/frp:0.27.0 .

五、编写客户端配置

nano frpc_active.ini
-----------------------------------------------------------------------------------------
[common]
server_addr = 106.54.29.251
server_port = 7000
token = MY_FRP_TOKEN

[www]
type = http
local_ip = 106.54.29.251
local_port = 8080
subdomain = www

[ssh]
type = tcp
local_ip = 192.168.1.251
local_port = 22
remote_port = 3000

[svn]
type = tcp
local_ip = 192.168.1.254
local_port = 3690
remote_port = 3001
-----------------------------------------------------------------------------------------

六、使用镜像

docker run -d \
--name frp-server \
--net=host \
--restart unless-stopped \
-e SUBDOMAIN_HOST=virs.top \
-e TOKEN=MY_FRP_TOKEN \
-e ALLOW_PORTS=2000-3000,3001,3002,3003,3004,3005,4000-50000 \
-e VHOST_HTTP_PORT=80 \
-e VHOST_HTTPS_PORT=443 \
-e BIND_PORT=7000 \
-e BIND_UDP_PORT=7001 \
-e KCP_BIND_PORT=7000 \
-e DASHBOARD_PORT=7500 \
-e DASHBOARD_USER=MY_USER_NAME \
-e DASHBOARD_PWD=MY_USER_PASSWORD \
yht/centos/frp:0.27.0 server

docker run -d \
--name frp-client \
--net=host \
--restart unless-stopped \
-v /data/frp/client/frpc_active.ini:/opt/frp/frpc_active.ini \
-v /data/frp/client/ssl:/ssl \
yht/centos/frp:0.27.0

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=7000/tcp
firewall-cmd --permanent --add-port=7001/tcp
firewall-cmd --permanent --add-port=7500/tcp
firewall-cmd --reload
firewall-cmd --list-all

参考文章: https://blog.csdn.net/qq_38419885/article/details/92830886

最后修改:2019-12-20 12:26:28 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

说点什么吧~

评论列表

还没有人评论哦~赶快抢占沙发吧~