Go Academy · Oppitunti

Docker Compose paikalliseen kehitykseen

Go-palvelun yhdistäminen PostgreSQL:ään ja Redisiin

Oppitunti 3/413 vaihetta

Docker Compose paikalliseen kehitykseen on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.

Miksi Docker Compose?

Docker Compose orkestroi useita kontteja (sovellus, tietokanta, välimuisti, viestinvälittäjä) paikallista kehitystä varten. Se jäljittelee tuotantoa muistuttavaa ympäristöä ilman palveluiden manuaalista määrittämistä.

docker-compose.yml:n rakenne

Määritelkää palvelut, verkot ja volyymit YAML-tiedostossa:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Live-reload Airilla

Käyttäkää github.com/air-verse/air-työkalua live-reloadaukseen kehityksen aikana. Liittäkää lähdekoodi konttiin ja suorittakaa air binäärin sijaan:

app:
  volumes:
    - .:/app
  command: air

Terveystarkistukset

Määritelkää terveystarkistukset, jotta depends_on odottaa tietokannan olevan todella valmis eikä vain käynnistynyt:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Ympäristökohtaiset ohitukset

Käyttäkää docker-compose.override.yml-tiedostoa (se yhdistetään automaattisesti) vain paikalliseen ympäristöön tarkoitetuille asetuksille. Näin perustiedosto pysyy siistinä CI:tä varten:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Nimetyt verkot

Sijoittakaa palvelut yhteiseen mukautettuun verkkoon, jotta ne voidaan löytää DNS:n avulla palvelun nimen perusteella:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Ympäristötiedostot

Käyttäkää env_file-avainta .env-tiedostojen lataamiseen konttiin, jolloin salaisuuksia ei tarvitse sisällyttää YAML-tiedostoon:

app:
  env_file: .env.local

Komentojen suorittaminen

Yleisiä Compose-komentoja:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Tietokannan alustus

Liittäkää SQL-alustustiedostot postgres-imagen /docker-entrypoint-initdb.d-hakemistoon — ne suoritetaan ensimmäisen konttiluonnin yhteydessä:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Profiilit

Käyttäkää Composen profiileja valinnaisten palveluiden (kuten valvontapinon) käynnistämiseen vain tarvittaessa:

services:
  grafana:
    profiles: ["monitoring"]

Compose CI:ssä

Suorittakaa integraatiotestit CI:ssä oikeita palveluita vasten Composen avulla. GitHub Actions tukee Docker Composea natiivisti; käyttäkää terveystarkistuksia odottaaksenne palveluiden valmistumista.

Pikatarkistus

Miten varmistatte, että sovelluskontti odottaa tietokannan valmistumista Docker Composessa?

Kertaus: Docker Compose

Tärkeimmät asiat:

  • docker-compose.yml määrittelee kaikki palvelut, verkot ja volyymit
  • depends_on ja healthcheck varmistavat palveluiden valmiuden
  • Ohitustiedostot paikallisen kehityksen asetuksille; env_file salaisuuksille
  • Air live-reloadaukseen; liittäkää lähdekoodi volyymina
Aloita maksutta

Opi Go tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Docker Compose paikalliseen kehitykseen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “Docker Compose paikalliseen kehitykseen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Docker Compose paikalliseen kehitykseen”?

Go-palvelun yhdistäminen PostgreSQL:ään ja Redisiin Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Docker Compose paikalliseen kehitykseen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?

Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Monivaiheiset Docker-koontiversiot Go:lle
  2. Ympäristökonfiguraatio ja salaisuudet
  3. Docker Compose paikalliseen kehitykseen
  4. Terveystarkistukset ja tuotantoviritys
← Takaisin: Go Academy