Create Go App CLI
Create a new production-ready Go project by running one CLI command!
⚡️ Quick start
Let's create a new project into ./app
folder with Fiber as backend and Nginx as web server:
cgapp create -p ./app -b fiber -w nginx
Okay, it works! Now, you can deploy this project to a remote server or run on your local machine in isolated Docker containers (one for Fiber
and one for Nginx
):
cd ./app
cgapp deploy -u john_doe --ask-become-pass
That's all you need to start!
⚙️ Installation
First of all, download and install Go. Version 1.11
or higher is required.
Installation is done by using the go build
command with $GOPATH/bin
:
go build -i -o $GOPATH/bin/cgapp github.com/create-go-app/cli
Check, that the CLI is installed correctly by the --version
(or -v
) command:
cgapp --version
~ Alternative installations
We're using a GoReleaser project for shipping standalone Create Go App CLI version to all major desktop platforms: Apple macOS, GNU/Linux, MS Windows. By default, for amd64 (x86_64) architecture.
If you need this version, please go to the repository release page and download zipped archive.
📚 Commands & Options
cgapp [command] [command options] [arguments...]
☝️ Tip: you can see all available commands by running command with--help
(or-h
) option.
create
CLI command to create a new project with the selected configuration.
Usage
cgapp create [command options] [arguments...]
Options
--path value, -p value path to create app, ex. ~/projects/my-app (default: ".")
--backend value, -b value backend for your app, ex. Fiber, Echo (default: "net/http")
--frontend value, -f value frontend for your app, ex. Preact, React.js, React.ts (default: "none")
--webserver value, -w value web/proxy server for your app, ex. Nginx (default: "none")
--database value, -d value database for your app, ex. Postgres (default: "none")
--help, -h show help
🔔 Please note: by default,cgapp create
command without any options will create into current folder default backend (net/http
) without frontend or configured Docker containers!
deploy
CLI command for deploy Docker containers with your project to a remote server or run on your local machine.
Usage
cgapp deploy [command options] [arguments...]
Options
--playbook value, -p value name of Ansible playbook, ex. my-play.yml (default: "deploy-playbook.yml")
--username value, -u value username of remote's server user or your local machine, ex. root (default: "none")
--host value, -s value host name of remote's server or local machine (from Ansible inventory), ex. do_server_1 (default: "localhost")
--network value, -n value network for Docker containers, ex. my_net (default: "cgapp_network")
--ask-become-pass asking you to enter become user's password at start (default: false)
--help, -h show help
🔔 Please note: you should only run thecgapp deploy
command from the root folder of your project, which created with thecgapp create
command! It's a necessary condition for everything to work perfectly.
📝 Available production-ready app templates
Golang:
net/http
create-go-app/net_http-go-template — Backend template with built-in net/http (pkg/net/http).fiber
create-go-app/fiber-go-template — Backend template with Fiber (gofiber/fiber).echo
WIP create-go-app/echo-go-template — Backend template with Echo (labstack/echo).
JavaScript:
react-js
create-go-app/react-js-template — Frontend template with React.js (facebook/react).react-ts
create-go-app/react-ts-template — Frontend template with React.js TypeScript (facebook/react).preact
create-go-app/preact-js-template — Frontend template with Preact (preactjs/preact).
🐳 Available production-ready Docker containers
Web/Proxy server:
nginx
create-go-app/nginx-docker — Docker container with Nginx.
Database:
postgres
WIP create-go-app/postgres-docker — Docker container with PostgreSQL.
👤 User templates & containers
Create Go App CLI provide creation your own template, instead of those prepared by authors. It's easy!
Just specify backend (-b
), frontend (-f
), webserver (-w
) and database (-d
) with addresses to your repositories and run:
cgapp create \
-b github.com/user/my-back-template \
-f gitlab.com/user/my-front-template \
-w github.com/user/my-webserver-container-template \
-d bitbucket.org/user/my-database-container-template
🔔 Please note: thehttps://
protocol will add automatically!
🤔 FAQ
— How to update CLI to latest version?
You can just re-build the CLI. The latest version will be downloaded and installed automatically:
go build -i -o $GOPATH/bin/cgapp github.com/create-go-app/cli
If you're using standalone version, please go to the release page and download archive with a new version.
— What do you use to automate the server deployment process?
Each project is created with the required set of configs to start the build and deployment process on the production server or local machine. We use a helpful tool, called Ansible for automate this.
In the root folder of the project you will find deploy-playbook.yml
file. Is the Ansible playbook describing the build app & deployment to server process.
👀 Hey! Don't worry, if you are not familiar with this technology, read this article from the docs. Besides, you can ask us about it in one of the issues.
— What does this playbook do?
- Builds production-ready backend (Go) & frontend (JavaScript, TypeScript) apps, that you have chosen
- Provides the best practices for web server and database configuration
- Configures Docker network with containers for backend, static files from frontend, web server and database
- Runs these Docker containers on your remote server or local machine
👌 We recommend to using our default playbook, but you are free to change them any way you want!
— What should I do for deploy my project?
- Check, that you have Ansible
v2.9.x
(or later) is installed. - Add the right host to your inventory file (into
/etc/ansible/hosts
) on your local machine. - Be sure, you're working with a SSH key correctly:
- Generate a new SSH key by command
ssh-keygen
on your local machine; - Add a public key part (with
*.pub
extension) into a bottom of~/.ssh/authorized_keys
file (with "one line" format) on your remote server; - Save a private key part on your local machine;
- Generate a new SSH key by command
- Run the built-in
cgapp deploy
command (from the root folder of your project):
cgapp deploy -p <PLAYBOOK_NAME> -u <USER> -s <HOST> -n <NETWORK_NAME> [EXTRA_VARS...]
<PLAYBOOK_NAME>
(optional, default:deploy-playbook.yml
) is the Ansible playbook name<USER>
(required) is an username of remote's server user (for example,root
)<HOST>
(optional, default:localhost
) is a host name from your inventory file<NETWORK_NAME>
(optional, default:cgapp_network
) is a network name for your Docker containers
👌 If you need to deploy (or run) project with entering password for user, you can add--ask-become-pass
variable in[EXTRA_VARS...]
section. You will be prompted to enter<USER>
's password at the beginning. This is an alias of the standard Ansible argument to ask for a privilege escalation password (see docs).
— Are there any video examples of working with the Create Go App CLI?
⭐️ Project assistance
If you want to say thank you or/and support active development create-go-app/cli
:
- Add a GitHub Star to the project.
- Twit about project on your Twitter.
- Donate some money to project author via PayPal: @paypal.me/koddr.
- Join DigitalOcean at our referral link (your profit is $100 and we get $25).
- Buy awesome domain name with 5% discount at REG.COM.
Thanks for your support!
~ Sponsors
Logo | Description | URL |
---|---|---|
True web artisans — Team who making UX efficiency review, friendly UI design, smart backend microservices, high-quality web apps and many more. | https://1wa.co | |
⚠️ License
MIT © Vic Shóstak & True web artisans.