ä¿®å¤ Gitea PostgreSQL Docker è¿æ¥é®é¢ | AIçæåç¿»è¯
ð§ æå¦ä½ä¿®å¤ Gitea â PostgreSQL è¿æ¥
é误
The database settings are invalid: dial tcp 172.17.0.1:5433: connect: connection timed out
Giteaï¼å¨ Docker ä¸è¿è¡ï¼æ æ³è¿æ¥å° PostgreSQLï¼å¨ä¸»æºä¸è¿è¡ï¼ãæä¸ä¸ªç¬ç«é®é¢é»å¡äºå®ã
é®é¢ 1ï¼PostgreSQL ä»
çå¬ localhost
åççæ
åµï¼ PostgreSQL çé»è®¤é
ç½®ä»
ç»å®å° 127.0.0.1ãè¿æå³çå®åªæ¥åæ¥èªä¸»æºæ¬èº«çè¿æ¥ â è䏿¯æ¥èª Docker 容å¨çè¿æ¥ã
å¦ä½åç°ï¼
sudo ss -tlnp | grep 5433
# è¾åºæ¾ç¤ºï¼127.0.0.1:5433 â ä»
localhostï¼
ä¿®å¤æ¹æ³ï¼
# å¨ /etc/postgresql/16/main/postgresql.conf 䏿´æ¹ï¼
# listen_addresses = 'localhost' â æ§çï¼æ³¨éæçé»è®¤å¼ï¼
listen_addresses = '*' â æ°ï¼çå¬æææ¥å£ï¼
ç°å¨ PostgreSQL å¨ 0.0.0.0:5433ï¼ææ IPï¼æ¥åè¿æ¥ï¼è䏿¯ä»
127.0.0.1ã
为ä»ä¹éè¦ï¼ Docker 容卿èªå·±çç½ç»å½å空é´ãä»å®¹å¨å
é¨çï¼127.0.0.1 æ¯å®¹å¨æ¬èº« â è䏿¯ä¸»æºãæä»¥ Docker å
ç localhost â 主æºç localhostã
é®é¢ 2ï¼Docker ç½ç»ä¸å¹é
åççæ
åµï¼ Gitea è¿è¡å¨èªå®ä¹ Docker ç½ç»ï¼gitea_defaultï¼ä¸ï¼ç½å
³ä¸º 172.22.0.1ï¼ä½ host.docker.internal è§£æä¸º 172.17.0.1ï¼é»è®¤ docker0 æ¡¥æ¥ï¼ã
å¦ä½åç°ï¼
docker inspect gitea --format '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}: {{$v.Gateway}}{{"\n"}}{{end}}'
# è¾åºï¼gitea_default: 172.22.0.1
docker exec gitea sh -c "getent hosts host.docker.internal"
# è¾åºï¼172.17.0.1 host.docker.internal
Docker Compose 为æ¯ä¸ªé¡¹ç®å建èªå·±çç½ç»ãhost.docker.internal æ å°ä½¿ç¨é»è®¤æ¡¥æ¥ IPï¼ä½æ¥èªèªå®ä¹ç½ç»çæµé并䏿»æ¯è½å¹²åå°è·¯ç±å°é»è®¤æ¡¥æ¥ã
ä¿®å¤æ¹æ³ï¼ éè¿å° listen_addresses = '*'ï¼PostgreSQL ç°å¨çå¬æææ¥å£ â å
æ¬èªå®ä¹ Docker ç½ç»å¯è¾¾çæ¥å£ãæ 论åªä¸ª Docker ç½ç»è¿æ¥ï¼åªè¦æµéå°è¾¾ä¸»æºç 5433 端å£ï¼PostgreSQL 就伿¥åã
é®é¢ 3ï¼iptables é»å¡è¿æ¥
åççæ åµï¼ å³ä½¿ä¿®å¤äºä¸è¿°ä¸¤ä¸ªé®é¢ï¼è¿æ¥ä»ç¶è¶ æ¶ãçæ£çé»å¡è æ¯ iptables â Linux é²ç«å¢ææ 声æ¯å°ä¸¢å¼äºæ¥èª Docker å°ä¸»æº 5433 端å£çæ°æ®å ã
å¦ä½åç°ï¼
# ä¿®å¤ listen_addresses åï¼åè¯ä¸æ¬¡ï¼
docker exec gitea sh -c "timeout 3 bash -c 'echo > /dev/tcp/host.docker.internal/5433'"
# ä»ç¶å¤±è´¥
# ç¶åæå¨æå¼ç«¯å£ï¼
sudo iptables -I INPUT -p tcp --dport 5433 -j ACCEPT
# åè¯ â æåï¼
Docker æèªå·±ç iptables é¾ãå½å®¹å¨å°è¯è¿æ¥ä¸»æºæ¶ï¼æ°æ®å
ä¼éè¿ä¸»æºç INPUT é¾ãå¦ææ²¡æè§åå
许ï¼å®å°±ä¼è¢«ä¸¢å¼ã
æ°¸ä¹ ä¿®å¤ï¼
sudo ufw allow from 172.16.0.0/12 to any port 5433 proto tcp comment 'postgresql-docker'
è¿æ¯åæ´ä¸ªäºèç½å¼æ¾ 5433 ç«¯å£æ´å®å ¨ â åªæ Docker 容卿è½è®¿é®ã
ä¿®å¤åçæµç¨
1. æµè§å¨ â http://192.168.1.36:3000
â
2. Gitea 容å¨ï¼172.22.0.xï¼
å° host.docker.internal è§£æä¸º â 172.17.0.1
â
3. æ°æ®å
å»ä¸ä¸»æºç iptables INPUT é¾
ufw è§åï¼"allow from 172.16.0.0/12 to port 5433" â ACCEPT â
â
4. PostgreSQL å¨ 0.0.0.0:5433 æ¥æ¶è¿æ¥
pg_hba.confï¼"allow gitea user from 172.16.0.0/12" â AUTHENTICATE â
â
5. Gitea è¿æ¥å° DBï¼å®è£
页颿£å¸¸å·¥ä½ ð
