龙空技术网

Docker环境下Caddy2反向代理Gitea配置总结

IT大叔的技术生活 167

前言:

眼前大家对“docker 22端口”可能比较关切,朋友们都想要剖析一些“docker 22端口”的相关文章。那么小编同时在网络上搜集了一些有关“docker 22端口””的相关文章,希望同学们能喜欢,朋友们一起来了解一下吧!

前置准备工作:

关于docker、docker-compose的安装和使用在此略过。在宿主机上建立Gitea容器需要使用的账户,并将/data/gitea/data/目录的属主设置成Gitea;建立公共网络命名空间:

/usr/sbin/adduser gitea -G gitea/usr/bin/chown gitea:gitea /data/gitea/data/usr/bin/docker network create common

宿主机文件目录结构

图:宿主机文件目录结构

docker网络结构及端口映射关系

caddy: front_net,commongitea: gitea_net,commongitea开放端口22、3000;caddy开放端口80、443;caddy reverse_proxy 到 gitea的3000

common是事先建立的共用docker网络:docker network create common,不会随着docker-compose的up和down而消失。建立common网络的目的有二:

一、Caddy2需要通过Gitea容器名称访问Gitea,二者必须处于共同的网络命名空间;

二、很多时候二者可能并不在同一个docker-compose的编排文件中,可能分别使用自己的编排文件启动。避免在启动时,由于引用了对方尚未建立的网络名称而出错。

Caddy2配置文件docker-compose.yml

version: "3"services:  caddy:     container_name: caddy     image: docker.io/library/caddy:latest     volumes:        - /etc/localtime:/etc/localtime:ro        - ./caddy:/etc/caddy                        #  这里把当前目录下的caddy目录挂载到caddy容器实例的/etc/caddy目录     ports:        - "80:80"        - "443:443"     networks:        - net        - front                                              # caddy容器与gitea共跨的外部网络networks:  net: {}                                                     # 实际网络是front_net  front:     external:        name: common
Caddy2配置文件Caddyfile
example.com {    log {        output file /etc/caddy/access.log    }    tls /etc/caddy/example.com.pem /etc/caddy/example.com.key    route /git/* {                  # 注意完整路径前后带“/”,后面带*        uri strip_prefix /git     # 注意这里不带最后的“/”        reverse_proxy gitea:3000  # 这里的3000,与app.ini中的HTTP_PORT一致    }}
Gitea配置文件docker-compose.yml
ersion: "3"services:  server:    image: gitea/gitea:latest    container_name: gitea    environment:      - USER_UID=1000      # 关于使用的UID和GID,参见Gitea文档。      - USER_GID=1000    restart: always    networks:      - net      - front                         #外部网络,后面的部署中,需要与Caddy共同加入的同一网络命名空间    volumes:      - ./data/:/data/           #gitea的文件将生成在该目录中      - /etc/timezone:/etc/timezone:ro      - /etc/localtime:/etc/localtime:ro    ports:      - "3000:3000"              # gitea的3000端口直接映射到公网      - "222:22"networks:  net: {}                              # 不要被名称误导,这个net在 docker网络里实际会解释成gitea_net  front:     external:        name: common    # front对应的外部网络:common
Gitea配置文件app.ini的server区段
[server]APP_DATA_PATH = /data/giteaDOMAIN = example.comSSH_DOMAIN = example.comHTTP_PORT = 3000                                 # 注意,不需要修改,容器仍然侦听自己的3000端口ROOT_URL =   # 在这里填写“”,注意最后有反斜杠DISABLE_SSH = falseSSH_PORT = 22SSH_LISTEN_PORT = 22LFS_START_SERVER = trueLFS_JWT_SECRET = GM-EoJmU27V8sbTs8v-EPwXpA6xwwz5krICk4zeBtZcOFFLINE_MODE = false

标签: #docker 22端口