Based on this great blog of Soham Kamani.
# Run unit tests
go test -v
# Run web app
go run main.go bird_handlers.go store.goBrowse to
wget localhost:8080
wget localhost:8080/hello
wget localhost:8080/assets/Use dep to manage dependencies.
# Install all dependencies
dep ensuredocker build -t gowebapp .
docker run -it --rm -p 8080:8080 --name my-running-gowebapp gowebappWhen you develop new code, you will need to remove the image in order to get it rebuild. (COPY in the Dockerfile does not detect changes?)
docker image rm gowebappdocker pull postgres
# Start postgress container
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
# Connect using psql
docker run -it --rm --link some-postgres:postgres postgres psql -h postgres -U postgres
#> password: mysecretpasswordPlay around with SQL.
-- Create the database
CREATE DATABASE bird_encyclopedia;
-- Enter the database
\c bird_encyclopedia
-- Create table
CREATE TABLE birds (
id SERIAL PRIMARY KEY,
species VARCHAR(256),
description VARCHAR(1024)
);
-- Get info
\d
\d birds
select * from birds;
-- Insert a value
INSERT INTO birds (species, description) VALUES ('kanarie', 'Small yellow brid');
select * from birds;
select species, description from birds;docker-compose upYou can verify if the database is initialized using psql:
docker exec -it webappfullstackgodocker_db_1 psql -d bird_encyclopedia -U postgres -c "select * from birds;"Cleaning things:
docker-compose -f docker-compose.yml rm --forceconnString := "host=db user=postgres password=secret dbname=bird_encyclopedia sslmode=disable"- Add unit test for store
- Add CI flow, Travis CI or Cirlce CI?