Publicando uma api REST Go no Heroku.

9048 단어 clouddockerherokugo
Com nossa api pronta, testada e com a documentação em dia, chegou a hora de botar isso rodar em cloud né? 그녀는 SalesForce가 Heroku를 공격하기 시작했습니다.
Heroku é uma plataforma de nuvem como serviço que suporta várias linguagens de programação.

Configurando nossa API



기본 구성은 컨테이너 도커를 로드하지 않고 컨테이너를 사용하지 않도록 설정하는 것입니다. 바모스 라!
Na raiz do projeto cry um arquivo chamado Dockerfile. Arquivo vamos configurar um multistage build para deixar nossa imagem com somente os recursos necessários para rodar aplicação가 없습니다.

FROM golang:latest AS builder
ADD . /go/api
WORKDIR /go/api

RUN go install github.com/swaggo/swag/cmd/swag@latest
RUN rm -rf deploy
RUN mkdir deploy
RUN swag init -d adapter/http --parseDependency --parseInternal --parseDepth 2 -o adapter/http/docs
RUN go mod tidy
RUN CGO_ENABLED=0 go build -o goapp adapter/http/main.go
RUN mv goapp ./deploy/goapp
RUN mv adapter/http/docs ./deploy/docs
RUN mv config.json ./deploy/config.json
RUN mv database ./deploy/database


FROM scratch AS production
COPY --from=builder /go/api/deploy /api/

WORKDIR /api
ENTRYPOINT  ./goapp


com o Dockerfile pronto vamos configurar nosso 배포 no github 작업 no arquivo .github/workflows/deploy.yaml .

name: Deploy to heroku app

on:
  create:
    tags:
      - v*

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Config file access
        run: |
          rm -rf config.json
          touch config.json 
          json='{"database": {"url": "://$DB_USER:$DB_PASS@$DB_HOST:$DB_PORT/$DB_NAME"},"server": {"port": ""}}'
          echo "$json" > config.json
          sed -i -e 's/$DB_PORT/'${{ secrets.DB_PORT }}'/g' config.json
          sed -i -e 's/$DB_USER/'${{ secrets.DB_USER }}'/g' config.json
          sed -i -e 's/$DB_PASS/'${{ secrets.DB_PASS }}'/g' config.json
          sed -i -e 's/$DB_NAME/'${{ secrets.DB_NAME }}'/g' config.json
          sed -i -e 's/$DB_HOST/'${{ secrets.DB_HOST }}'/g' config.json
          cat config.json

      - uses: akhileshns/[email protected]
        with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: "clean-go"
          heroku_email: ${{secrets.HEROKU_MAIL}}
          usedocker: true


Esse arquivo deploy.yaml precisa de algumas variaveis de ambiente para funcionar corretamente.

  • secrets.HEROKU_MAIL: heroku에 이메일을 보내세요

  • secrets.HEROKU_API_KEY: Va nas configurações da sua conta





  • secrets.DB_PORT, secrets.DB_USER, secrets.DB_PASS, secrets.DB_NAME, secrets.DB_HOST: postgres의 애드온입니다.















  • Credencias do banco de dados e adicione nos secrets do github로 복사:







    Crie uma release com uma tag com prefixov :



    빨리! 액션을 실행하지 않고 heroku를 배포하지 마십시오:





    Quando ele ficar verdinho. Verifique o endpoint do app no ​​heroku que vai estar rodando lisinho! :디



    수아베즈



    바이 나 페! Acredito totalmente em você, independente do seu nível de conhecimento técnico, você vai criar a melhor api em GO.
    Se você se deparar com problemas que não consegue resolver, sinta-se à vontade para entrar em contato. Vamos 리졸버 isso juntos.

    Github Actions를 사용하지 않는 이유는 무엇입니까?



    Próximo post vamos configurar e rodar os testes no action integrando com a ferramenta doCodeCov .

    좋은 웹페이지 즐겨찾기