一、准备相关软件包
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
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论