Docker aplikacije i HostArena S3: podešavanje

Docker aplikacije i HostArena S3: podešavanje

Mnoge aplikacije koje se pokreću u Docker-u mogu da čuvaju fajlove, slike ili bekape na S3 skladištu. Sa HostArena S3 storage povezujete ih tako što aplikaciji, preko promenljivih okruženja, date adresu servera, region, naziv bucketa i ključeve. Ovo uputstvo je opšte: tačna imena promenljivih zavise od aplikacije.

Šta vam je potrebno

PodatakVrednostGde ga nalazite
Endpointhttps://s3.hostarena.rsIsti za sve korisnike
RegiongarageObavezno tačno ovako
Bucketvas-bucketHostArena korisnički panel, kod S3 usluge
Access KeyVAS_ACCESS_KEYHostArena korisnički panel, kod S3 usluge
Secret KeyVAS_SECRET_KEYHostArena korisnički panel, kod S3 usluge

Potrebni su vam Docker i Docker Compose (komanda docker compose).

Važno: imena promenljivih zavise od aplikacije

Ne postoji jedan skup promenljivih koji razume svaka aplikacija. Svaka aplikacija u svojoj dokumentaciji navodi kako se zovu njena S3 podešavanja. Na primer, jedna traži S3_ENDPOINT, druga AWS_S3_ENDPOINT ili STORAGE_S3_URL. Zato prvo pogledajte dokumentaciju aplikacije i potražite deo o S3 ili „object storage” podešavanjima.

Bez obzira na imena, vrednosti su uvek iste:

  • adresa servera: https://s3.hostarena.rs (ako aplikacija traži samo ime servera: s3.hostarena.rs, port 443, HTTPS uključen),
  • region: garage,
  • bucket: naziv iz HostArena korisničkog panela,
  • ključevi: Access Key i Secret Key iz panela,
  • ako aplikacija ima opciju za path-style (npr. „force path style”), uključite je.

Promenljive AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION i AWS_ENDPOINT_URL su standardne za zvanične AWS alate i novije verzije AWS SDK-a. Aplikacija napravljena na takvom SDK-u ih često prepoznaje sama, ali to nije garantovano. Proverite u dokumentaciji.

Koraci

  1. U folderu projekta napravite fajl .env sa podacima. Imena promenljivih prilagodite svojoj aplikaciji:

    # .env – NE objavljujte ovaj fajl (dodajte ga u .gitignore)
    AWS_ACCESS_KEY_ID=VAS_ACCESS_KEY
    AWS_SECRET_ACCESS_KEY=VAS_SECRET_KEY
    AWS_REGION=garage
    AWS_ENDPOINT_URL=https://s3.hostarena.rs
    S3_BUCKET=vas-bucket
  2. Odmah zabranite da .env završi u git repozitorijumu:

    echo ".env" >> .gitignore

    Pažnja: ključevi nikada ne smeju da završe u javnom git repozitorijumu (GitHub, GitLab i slično), ni u docker-compose.yml, ni u Dockerfile-u. Ko dođe do ključeva, može da čita i briše sve fajlove u vašem bucketu. Ako se to ipak desi, odmah promenite ključeve u HostArena korisničkom panelu.

  3. Napravite docker-compose.yml. Polje version se više ne piše, jer je zastarelo i Docker Compose ga zanemaruje:

    services:
      app:
        image: vasa-aplikacija:latest   # zamenite imenom image-a vaše aplikacije
        env_file: .env
        restart: unless-stopped
    
      # Pomoćni servis samo za proveru veze, ne radi stalno
      s3-test:
        image: amazon/aws-cli:latest
        env_file: .env
        command: ["s3", "ls", "s3://vas-bucket/"]
        profiles: ["test"]

    Opcija env_file prosleđuje kontejneru sve promenljive iz .env fajla, pa ključevi ne stoje u samom compose fajlu.

  4. Pokrenite aplikaciju:

    docker compose up -d
    docker compose logs -f app

Provera da radi

Pre nego što tražite grešku u aplikaciji, proverite da li sami podaci rade. Pomoćni servis s3-test koristi zvanični AWS CLI image i ispisuje sadržaj bucketa:

docker compose run --rm s3-test

Ako dobijete spisak fajlova ili prazan odgovor bez greške, adresa, region i ključevi su ispravni. Ako aplikacija i dalje ne radi, problem je u imenima promenljivih koje ona očekuje.

Najčešći problemi

Aplikacija i dalje pokušava da se poveže na Amazon

Aplikacija ne prepoznaje promenljivu za adresu servera. Pronađite u njenoj dokumentaciji tačno ime promenljive za S3 endpoint.

AuthorizationHeaderMalformed

Region nije garage. Neke aplikacije imaju svoju promenljivu za region i ne čitaju AWS_REGION.

AccessDenied ili InvalidAccessKeyId

Proverite ključeve u .env fajlu (bez navodnika i razmaka oko znaka =). Posle izmene .env fajla ponovo napravite kontejner komandom docker compose up -d --force-recreate.

NoSuchBucket ili greška u adresi

Proverite naziv bucketa i da adresa servera ne sadrži naziv bucketa. Ako aplikacija ima opciju za path-style, uključite je.

Zaključak

Ako vaša aplikacija koristi neki od poznatih okvira, pogledajte i Laravel, Nextcloud ili primere za Node.js i Python. Tehnički detalji o adresama i potpisivanju zahteva nalaze se u uputstvu HostArena S3 API: adrese, potpisivanje i kompatibilnost. Nemate S3 uslugu? Pogledajte pakete na stranici HostArena S3 storage. Ako zapne, otvorite tiket u korisničkom panelu.

Tags: , , ,