Gitea已经安装好了,地址是http://192.168.0.103:3000/,现在需要做的是将这个地址使用域名的方式访问
需要下面几个步骤
下载SwitchHost,将giteadev.llblog.cn映射到192.168.0.103这个地址
使用docker运行nginx容器,将giteadev.llblog.cn这个域名的请求反向代理到192.168.0.103:3000这个上面
1、下载安装SwitchHost,目前最新版本是4.2.0,win11就下载SwitchHosts_windows_installer_x64_4.2.0.6119.exe
2、使用Docker安装Nginx,并进行配置,这里贴一下完整的docker-compose.yaml,因为需要使用nginx做反向代理,所以必须给gitea服务指定IP
networks:
gitea-network:
external: false
ipam:
config:
- subnet: 192.168.2.0/24
#这里使用的是命名卷
volumes:
gitea:
driver: local
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro # 主配置文件
- ./nginx/conf.d:/etc/nginx/conf.d # 动态配置目录
- ./nginx/html:/usr/share/nginx/html # 网站根目录
- ./nginx/logs:/var/log/nginx # 日志目录
networks:
gitea-network:
ipv4_address: 192.168.2.4
restart: on-failure:3
depends_on:
- gitea
gitea:
image: docker.gitea.com/gitea:1.23.7
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
gitea-network:
ipv4_address: 192.168.2.3
volumes:
- gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: docker.io/library/mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
gitea-network:
ipv4_address: 192.168.2.2
volumes:
- ./mysql:/var/lib/mysql
其中也遇到了一个小麻烦,第一次使用docker-compose up -d 命令启动的时候,因为指定的卷生成了一个nginx.conf文件夹,所以启动失败了,然后使用DeepSeek找了一个解决办法,就是先把配置文件拷贝出来,然后再启动就成功了。
docker run --name tmp-nginx -d nginx
docker cp tmp-nginx:/etc/nginx/nginx.conf ./nginx/nginx.conf
docker stop tmp-nginx && docker rm tmp-nginx
3、下面贴一下nginx的配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name giteadev.llblog.cn;
location / {
proxy_pass http://192.168.2.3:3000;
}
}
include /etc/nginx/conf.d/*.conf;
}