GO-Web-Practice é um projeto de aprendizado. Implemente um aplicativo da Web simples usando a biblioteca nativa de Golang.
Este projeto é aprendido e escrito pelo vídeo "Go Programming Quick Start [Golang/Go Language] (completo)" pelo principal técnico de software da UP na estação B.
Com base no vídeo, algumas modificações foram feitas:
Este projeto foi testado e implantado, e o Guia de implantação do host Linux está abaixo.
Estrutura do projeto:
go-web-practice
.
├── LICENSE
├── README.md
├── build
│ └── package
│ ├── dockerfile.build_run
│ └── dockerfile.run
├── cmd
│ └── main.go
├── configs
│ └── config.json
├── deployments
│ └── docker-compose.yaml
├── go.mod
├── internal
│ ├── config
│ │ ├── config.go
│ │ └── config_test.go
│ ├── controller
│ │ ├── controller.go
│ │ ├── index.go
│ │ ├── look.go
│ │ └── welcome.go
│ ├── log
│ │ └── log.go
│ ├── middleware
│ │ ├── cross.go
│ │ ├── log.go
│ │ └── timeout.go
│ └── templates
│ └── template.go
└── web
├── img
│ ├── favicon.ico
│ ├── golang-down.png
│ ├── golang-right.png
│ └── golang.png
├── plugins
│ ├── bootstrap
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── js
│ │ └── bootstrap.min.js
│ └── jquery
│ └── js
│ └── jquery.min.js
└── templates
├── index.tmpl
├── look.tmpl
├── test.tmpl
└── welcome.tmpl
Perceber
A seguir estão os problemas atuais do projeto
Ou algo para prestar atenção ao fazer o dever de casa da universidade.
- O projeto foi desenvolvido usando Goland, e a migração de outros IDEs é desconhecida.
- Somente um pequeno comentário é escrito em main.GO, e os comentários de outros arquivos são atualizados no futuro.
- Existem muito poucas interfaces de roteamento no projeto atual, para que você possa adicioná -las, se precisar.
- Nenhum banco de dados.
- Antes de executar com o Docker e o Docker-Compose, você precisa compilar o projeto ou colocar o arquivo executável no diretório do projeto.
Primeiro, você deve ter certeza de que instalou o ambiente de Golang. Se você modificar o projeto, precisará recompilar e obter o arquivo executável antes que ele possa ser implantado e executado. **
A compilação cruzada de Golang fornece grande conveniência, o que nos permite compilar arquivos executáveis que podem ser executados no Linux no Windows.
Você pode usar o seguinte script .bat para concluir a compilação de arquivos executáveis em ambientes Windows e Linux no Windows.
# 请以项目目录为工作目录执行该脚本
# windows 可执行文件编译
go build -o go-web-practice.exe cmdmain.go
# linxu 可执行文件编译
set CGO_ENABLED = 0
set GOOS = linux
set GOARCH = amd64
go build -o go-web-practice .cmdmain.go
pause Se você estiver desenvolvendo no macOS ou no Linux, poderá construí -lo com make .
makeEste projeto usa um arquivo json para configurar.
Verifique a semântica de configuração do config/conifg.json como mostrado na tabela a seguir, e modifique -as de acordo com suas necessidades.
| Campos de configuração | Semântica |
|---|---|
| estático | O caminho para o arquivo estático |
| modelo | O caminho para o modelo Go |
| endereço | O endereço da inicialização do serviço (o padrão está vazio e a implantação de rede pública pode ser implementada) |
| porta | A porta para startup de serviço |
| HandleTimeoutSecond | Solicitar o tempo limite do processamento (essa configuração não é usada no projeto e é reservada) |
| traço | Trace Logger o caminho para produzir o log (não usado no projeto, reservado) |
| informações | Caminho do logger de informações para o log de saída |
| Aviso | Aviso Caminho de Logger para o log de saída |
| erro | Logger de erro O caminho para o log de saída |
A estrutura do diretório a seguir deve ser garantida ao executar (levando o Linux em execução como exemplo):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...Execute o arquivo executável diretamente e veja os seguintes solicitações de que a execução seja bem -sucedida:

Você pode testá -lo com curl localhost:8000/welcome , que retornará o HTML da interface de boas -vindas.
Acesso nativo (configuração da porta não é modificada): http: // localhost: 8000.
Se você estiver implantando em um servidor e deseja acessá -lo através da rede pública, lembre -se de configurar um firewall para abrir a porta correspondente. Se for um servidor em nuvem, você também deve abrir o grupo de segurança.
A filial principal atualizou o Dockerfile e usou o Docker para testar a compilação e operação da prática Go-Web.
A seguir, é apresentado o guia de execução de compilação/implantação do Docker para a prática Go-Web.
O que é o Docker, como instalar e como usá -lo, não será explicado em detalhes aqui.
Para detalhes, consulte o documento oficial do Docker: https://docs.docker.com/
Execute os comandos na seguinte ordem no diretório do projeto para concluir a compilação no momento da criação de imagens e execute o serviço quando o contêiner iniciar.
$ docker build -t go-web-practice -f ./build/package/dockerfile.build_run . docker run -d -p 8000:8000 go-web-practiceApós a compilação local e a geração de arquivos executáveis, crie a imagem em execução, que pode garantir que a imagem possa ser executada normalmente, mesmo que o tamanho da imagem seja pequeno.
O tamanho da imagem da imagem compilado e executado usando o Docker acima está próximo de 1 GB, enquanto a imagem executável embutida nesta seção é de apenas 100 MB.
NOTA: Depois que a imagem denominada Go-Web-Practice foi construída acima, a imagem antiga deve ser excluída antes de executar as instruções nesta seção.
Primeiro, verifique se há um arquivo executável compilado no diretório do projeto.
Existe um DockerFile preparado no diretório /build/package do projeto para gerar o arquivo de imagem. Use as seguintes instruções para criar a imagem do Docker.
$ docker build -t go-web-practice -f ./build/package/dockerfile.run . Digite o seguinte comando ao executar o contêiner em segundo plano:
$ docker run -d -p 8000:8000 go-web-practicedocker-composeDepois de construir a imagem, ela também é implantada diretamente usando a Diretiva Docker-Compose:
$ docker-compose -f deployments/docker-compose.yaml upObserve que, se a configuração da porta for modificada, você precisará modificar o comando do Docker Run e o campo de mapeamento da porta no arquivo de configuração do docker-compose.yaml.
Se você tiver alguma dúvida, entre em contato comigo por e -mail: [email protected]