# 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 debug application locally #### Create environment file Create and fill environment file from template `.env.dist` ``` shell cp .env.dist .env ``` ### Build, run and debug application with docker #### Create environment file for docker Create and fill environment file from template `.env.dist` ``` shell cp .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 ``` Push container ``` shell docker push psssix/golang-app:latest ``` #### Run docker container Run container on docker ``` shell docker run -d --name golang-app --env-file .env.docker psssix/golang-app:latest ``` and container with debugger ``` 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 ``` #### 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".