golang-app/README.md

105 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2022-08-07 00:47:11 +03:00
# Standard Go Project Template
This is a template for Go application projects based on [Standard Go Project Layout](https://github.com/golang-standards/project-layout).
### Build, run and test application locally
2022-08-07 00:47:11 +03:00
#### Create environment file
Create and fill environment file from template `.env.dist`
``` shell
cp configs/.env.dist .env
```
#### Build application
``` shell
go mod tidy
go build -ldflags "-s -w" -o bin/app .
```
#### Run application
``` shell
2022-08-07 23:32:24 +03:00
env $(cat .env|grep -v -e #|xargs) ./bin/app
```
#### Test application
``` shell
go test ./...
```
2022-08-07 00:47:11 +03:00
### Build, run and debug application with docker
#### Create environment file for docker
Create and fill environment file from template `.env.dist`
``` shell
cp configs/.env.dist .env.docker
2022-08-07 00:47:11 +03:00
```
#### Build docker container
Build container
2022-08-07 00:47:11 +03:00
``` shell
docker build . -t psssix/golang-app:latest
```
and container with debugger
2022-08-07 00:47:11 +03:00
``` shell
docker build . -f Debug.Dockerfile -t psssix/golang-app:debug
```
Push container
2022-08-07 00:47:11 +03:00
``` shell
docker push psssix/golang-app:latest
```
#### Run docker container
2022-08-03 23:17:49 +03:00
Run container on docker
2022-08-07 00:47:11 +03:00
``` shell
docker run -d --name golang-app --env-file .env.docker psssix/golang-app:latest
```
and container with debugger
2022-08-07 00:47:11 +03:00
``` shell
docker run -d --name golang-app --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE -p 4040:4040 --env-file .env.docker psssix/golang-app:debug
2022-08-07 00:47:11 +03:00
```
#### Debug docker container
1. Create and fill `.env.docker` file by template `.env.dist`.
2. Build docker container with debugger.
3. Run container on docker with debugger.
4. Play debug configuration names as "debug remote docker container".
### Build, run and debug application with docker-compose
#### Create environment file for docker
Create and fill environment file from template `.env.dist`
``` shell
cp configs/.env.dist .env.docker
```
#### Build docker container
Build container
``` shell
docker build . -t psssix/golang-app:latest
```
and container with debugger
``` shell
docker build . -f Debug.Dockerfile -t psssix/golang-app:debug
```
#### Run docker container
Run container on docker
``` shell
docker up -d --env-file .env.docker
```
and container with debugger
``` shell
docker up -d --env-file .env.docker -f docker-compose-debug.yml
```
2022-08-07 00:47:11 +03:00
#### Debug docker container
1. Create and fill `.env.docker` file by template `.env.dist`.
2. Build docker container with debugger.
3. Run container on docker with debugger.
4. Play debug configuration names as "debug remote docker container".