/golang-web-apllication-template

Estrutura básica para deploy e execução de uma aplicação web feita com Go utilizando container Docker.

Primary LanguageCSSGNU General Public License v3.0GPL-3.0

Golang Web Apllication Server

Aplicação web básica feito com go contendo:

  • Testes unitários
  • Script para execução da aplicação localmente (Ambiente de desenvolvimento)
  • Script para geração do binário da aplicação para uso em produção
  • Script de deploy usado no ambiente de produção

Para trabalhar com TimeZone personalizado

Referência: https://programmerah.com/how-to-set-time-zone-in-golang-23094/

var timeZone, _ = time.LoadLocation("America/Sao_Paulo")
fmt.Println("Data e Hora : ", time.Now().In(timeZone).Format("2006-01-02 15:04:05"))

Para realizar configuração global do Timezone, realizar a configuração abaixo na função main

func main() {
  var timeZone = time.FixedZone("America/Sao_Paulo", -3*3600)	
	time.Local = timeZone
}

Executar aplicação localmente sem usar container docker

./run.sh

Retorno da execução acima deverá ser algo semelhante:

---------------------------------------------------------
Configurando aplicação:
---------------------------------------------------------
2021/08/03 18:12:50 listening on http://localhost:3000

Gerar binário da aplicação

./build.sh

Retorno da execução acima deverá ser algo semelhante:

---------------------------------------------------------
Gerando executável dos testes unitário:
---------------------------------------------------------
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2018
UPX 3.95        Markus Oberhumer, Laszlo Molnar & John Reiser   Aug 26th 2018

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   3211392 ->   1810964   56.39%   linux/amd64   hospeda.app_test              

Packed 1 file.

---------------------------------------------------------
Configurando aplicação:
---------------------------------------------------------

---------------------------------------------------------
Rodando teste unitário:
---------------------------------------------------------
PASS

---------------------------------------------------------
Gerando executável da aplicação:
---------------------------------------------------------
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2018
UPX 3.95        Markus Oberhumer, Laszlo Molnar & John Reiser   Aug 26th 2018

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   6647808 ->   2538320   38.18%   linux/amd64   hospeda.app                   

Packed 1 file.
tayron@tayron:~

Executar aplicação utilizando container docker ou deploy no servidor de produção

Abra o arquivo docker-compose.yml e altere URL=http://localhost para o endereço do seu site, exemplo: URL=https://www.hospeda.app. Caso deseje testar o container localmente, basta deixar como URL=http://localhost.

Logo em seguida execute:

./deploy.sh

Retorno da execução acima deverá ser algo semelhante:

---------------------------------------------------------
Criando ambiente de teste:
---------------------------------------------------------

---------------------------------------------------------
Baixando atualizações:
---------------------------------------------------------
Already up to date.

---------------------------------------------------------
Configurando aplicação:
---------------------------------------------------------

---------------------------------------------------------
Rodando testes unitário:
---------------------------------------------------------
PASS

---------------------------------------------------------
Baixando atualizações no projeto principal:
---------------------------------------------------------
Already up to date.

---------------------------------------------------------
Subindo aplicação:
---------------------------------------------------------
/usr/lib/python3/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
Creating network "go-web-apllication-server_default" with the default driver
Building hospeda.app
Step 1/7 : FROM golang
 ---> bfb42f2526a7
Step 2/7 : MAINTAINER Hospeda App <ti@hospeda.app>
 ---> Using cache
 ---> 1497cdb89403
Step 3/7 : RUN apt-get update
 ---> Using cache
 ---> 0fcc5ac0ba86
Step 4/7 : RUN apt-get install ffmpeg -y
 ---> Using cache
 ---> 092621c625cc
Step 5/7 : WORKDIR /home
 ---> Using cache
 ---> 91920fde7eef
Step 6/7 : ENTRYPOINT ./web_application
 ---> Using cache
 ---> 8f3024dfc86b
Step 7/7 : EXPOSE 80
 ---> Using cache
 ---> 2c8709d67c34
Successfully built 2c8709d67c34
Successfully tagged go-web-apllication-server_hospeda.app:latest
Creating hospeda.app ... done


---------------------------------------------------------
Restartando a aplicação:
---------------------------------------------------------
hospeda.app


---------------------------------------------------------
Obtendo ip da aplicação:
---------------------------------------------------------

| 172.28.0.2 


tayron@tayron:~/go/src/github.com/tayron/go-web-apllication-server$ ./deploy.sh 

---------------------------------------------------------
Criando ambiente de teste:
---------------------------------------------------------

---------------------------------------------------------
Baixando atualizações:
---------------------------------------------------------
Already up to date.

---------------------------------------------------------
Configurando aplicação:
---------------------------------------------------------

---------------------------------------------------------
Rodando testes unitário:
---------------------------------------------------------
PASS

---------------------------------------------------------
Baixando atualizações no projeto principal:
---------------------------------------------------------
Already up to date.

---------------------------------------------------------
Subindo aplicação:
---------------------------------------------------------
/usr/lib/python3/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
Building hospeda.app
Step 1/5 : FROM golang
 ---> bfb42f2526a7
Step 2/5 : MAINTAINER Hospeda App <ti@hospeda.app>
 ---> Using cache
 ---> 1497cdb89403
Step 3/5 : WORKDIR /home
 ---> Running in df9906c9a674
Removing intermediate container df9906c9a674
 ---> 1d9ac2c092a6
Step 4/5 : ENTRYPOINT ./web_application
 ---> Running in 8ba96f21116b
Removing intermediate container 8ba96f21116b
 ---> f45de30c7eb0
Step 5/5 : EXPOSE 80
 ---> Running in d294bd129c96
Removing intermediate container d294bd129c96
 ---> 5b99cb450ab7
Successfully built 5b99cb450ab7
Successfully tagged go-web-apllication-server_hospeda.app:latest
Recreating hospeda.app ... done


---------------------------------------------------------
Restartando a aplicação:
---------------------------------------------------------
hospeda.app


---------------------------------------------------------
Obtendo ip da aplicação:
---------------------------------------------------------

| 172.28.0.2

A aplicação estará rodando e acessível através do endereço http://172.28.0.2