Docker verbindet sich manchmal nicht mit github.com

Beim Versuch, Discourse über ./launcher rebuild app zu aktualisieren, tritt ein Problem auf mit

fatal: unable to access 'https://github.com/discourse/REPO.git/': Failed to connect to github.com port 443: Connection timed out

Das Problem ist jedoch: Manchmal schlägt dies selbst für Discourse fehl. Wenn Sie es jedoch sofort danach erneut versuchen, ohne Änderungen, kann es durchgehen, aber bei einem der Plugins fehlschlagen. Wenn ich alle Plugins entferne, kann die Discourse-Verbindung fehlschlagen oder sie kann durchgehen und tatsächlich das gesamte Ding erstellen.

Ich habe dies gesehen

aber ich weiß nicht, wie man das Container-Netzwerk debuggt.

1 „Gefällt mir“

Sie haben nicht genau das Problem, das im Thread, den Sie verlinkt haben, beschrieben wird, und tatsächlich scheinen Sie ein intermittierendes Problem zu haben, das immer am schwierigsten zu diagnostizieren ist. Aber vielleicht könnten Sie einen manuellen Abruf versuchen. Ich habe dies versucht, was harmlos ist:

# cd /var/discourse/
# ./launcher enter app
x86_64 arch detected.
# wget -O - -v https://github.com/discourse/logster.git/ |wc
--2023-01-04 15:30:25--  https://github.com/discourse/logster.git/
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/discourse/logster/ [following]
--2023-01-04 15:30:25--  https://github.com/discourse/logster/
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘STDOUT’

-                                                  [ <=>                                                                                                 ] 231.22K  --.-KB/s    in 0.06s   

2023-01-04 15:30:26 (3.99 MB/s) - written to stdout [236767]

   2751   15860  236767
#

Wir sehen, dass “github.com” zu einer vernünftigen IP-Adresse aufgelöst wurde, kontaktiert wurde und einige Daten zurückgegeben hat. Tatsächlich verhielt sich der Befehl, der im Container ausgeführt wurde, sehr ähnlich wie außerhalb des Containers, und das ist wie erwartet.

Verwenden Sie ein unterstütztes Installationsrezept bei einem bekannten Hosting-Unternehmen?

1 „Gefällt mir“

Erster Versuch ergab

Connecting to github.com (github.com)|140.82.121.4|:443... fehlgeschlagen: Connection timed out.
Retrying.

Standardinstallationsmethode

hängt davon ab, wie man bekannt definiert, aber dies ist ein ziemlich großer Player

OK, es versucht also zumindest, eine vernünftige IP-Adresse zu kontaktieren. Ich würde Routing-Probleme, eine Firewall oder ein Problem auf Hosting-Ebene vermuten.

Wenn Sie den Test außerhalb des Containers erneut ausführen, sehen Sie, ob Sie ein Container-spezifisches Problem oder eher ein allgemeines Linux-Problem haben.

1 „Gefällt mir“

Es ist containerspezifisch. Ich habe Schwierigkeiten zu verstehen, was dies verursacht haben könnte, da ich den Container noch nicht zuvor geändert habe und die Website etwa 1,5 Jahre alt ist.

Hmm, also, außerhalb des Containers können Sie diesen Test zuverlässig ausführen?

Vielleicht könnten Sie eine bereinigte Version Ihrer app.yml teilen? (Ich habe keine Ahnung, was vor sich gehen könnte, aber vielleicht entdeckt jemand etwas.)

Wie alt ist die aktuelle Installation – welche Version und welche ID hat sie laut Ihrem Dashboard?

[quote=“Ed S, post:6, topic:250643, username:Ed_S”]kannst du diesen Test zuverlässig ausführen?
[/quote]

Yep

[quote=“Ed S, post:6, topic:250643, username:Ed_S”]könntest du eine bereinigte Version deiner app.yml teilen?
[/quote]

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"
  db_shared_buffers: "128MB"
  #db_work_mem: "40MB"
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
  UNICORN_WORKERS: 2
  DISCOURSE_HOSTNAME: domain.example.com

  #DOCKER_USE_HOSTNAME: true

  DISCOURSE_DEVELOPER_EMAILS: 'some@emails.com'

  DISCOURSE_SMTP_ADDRESS: smtp.domain.com
  DISCOURSE_SMTP_PORT: port
  DISCOURSE_SMTP_USER_NAME: email@email.com
  DISCOURSE_SMTP_PASSWORD: "password"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: domain.com
  DISCOURSE_NOTIFICATION_EMAIL: email@email.com

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: email@email.com

  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-whos-online.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-gamification
          - git clone https://github.com/discourse/discourse-checklist
          - git clone https://github.com/discourse/discourse-footnote
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/discourse/discourse-encrypt.git

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  - exec: echo "End of custom commands"

Hinweis: Ich habe versucht, die App ohne Plugins zu erstellen. Entweder wird Discourse selbst nicht abgerufen oder das Klonen des 3. oder 4. Plugins in der Liste schlägt fehl (was bedeutet, dass ich mit nur 2-3 Plugins eine App nach dem 3.-4. Versuch erstellen kann).

[quote=“Ed S, post:6, topic:250643, username:Ed_S”]Wie alt ist die aktuelle Installation - welche Version und welche ID hat sie?
[/quote]
Es war 2.9.0.beta14, kurz bevor ich versuchte, auf 3.0.0.beta15 zu aktualisieren. Ich erinnere mich nicht an die spezifische ID, aber das letzte Mal wurde es ungefähr am 25.-26. Dezember aktualisiert.

Es würde definitiv helfen, wenn Sie vager wären, was den von Ihnen verwendeten Anbieter betrifft. Diese variieren stark in Bezug auf die Komplexität ihrer Netzwerke.

Es wird wahrscheinlich viel länger dauern, dies im Blindflug zu beheben.

4 „Gefällt mir“

Es ist nicht so, dass ich versucht habe, die verfügbaren Informationen einzuschränken, sondern eher, ob der Name Ihnen etwas sagen wird, da es sich nicht um ein westliches Unternehmen handelt. Die Instanz wurde von reg.ru gehostet, dem größten Hoster in Russland. Jedenfalls war deren Support dieses Mal[1] nicht hilfreich, also habe ich meine Website zu DigitalOcean verlagert. Mit den gleichen Einstellungen, dem gleichen Verfahren für die Docker-Installation funktionierte alles (und scheint zu funktionieren) einwandfrei.


  1. er ist normalerweise ziemlich gut ↩︎

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.