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
| Podatak | Vrednost | Gde ga nalazite |
|---|---|---|
| Endpoint | https://s3.hostarena.rs | Isti za sve korisnike |
| Region | garage | Obavezno tačno ovako |
| Bucket | vas-bucket | HostArena korisnički panel, kod S3 usluge |
| Access Key | VAS_ACCESS_KEY | HostArena korisnički panel, kod S3 usluge |
| Secret Key | VAS_SECRET_KEY | HostArena 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
U folderu projekta napravite fajl
.envsa 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-bucketOdmah zabranite da
.envzavrši u git repozitorijumu:echo ".env" >> .gitignorePažnja: ključevi nikada ne smeju da završe u javnom git repozitorijumu (GitHub, GitLab i slično), ni u
docker-compose.yml, ni uDockerfile-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.Napravite
docker-compose.yml. Poljeversionse 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_fileprosleđuje kontejneru sve promenljive iz.envfajla, pa ključevi ne stoje u samom compose fajlu.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-testAko 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.
