12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # 1.Prepare your workspace by:
- # docker compose -f docker-compose.dev.yaml run api go install github.com/cosmtrek/air@latest
- # docker compose -f docker-compose.dev.yaml run web npm install
- #
- # 2. Start you work by:
- # docker compose up -d
- #
- # 3. Check logs by:
- # docker compose logs -f
- #
- services:
- db:
- image: mysql
- volumes:
- - ./.air/mysql:/var/lib/mysql
- api:
- image: golang:1.21-alpine
- working_dir: /work
- command: air -c ./scripts/.air.toml
- environment:
- - "MEMOS_DSN=root@tcp(db)/memos"
- - "MEMOS_DRIVER=mysql"
- volumes:
- - $HOME/go/pkg/:/go/pkg/ # Cache for go mod shared with the host
- - ./.air/bin/:/go/bin/ # Cache for binary used only in container, such as *air*
- - .:/work/
- web:
- image: node:18-alpine
- working_dir: /work
- depends_on: ["api"]
- ports: ["3001:3001"]
- environment: ["DEV_PROXY_SERVER=http://api:8081/"]
- command: npm run dev
- volumes:
- - ./web:/work
- - ./.air/node_modules/:/work/node_modules/ # Cache for Node Modules
- # Services below are used for developers to run once
- #
- # You can just run `docker compose run --rm SERVICE_NAME` to use
- # For example:
- # To regenerate typescript code of gRPC proto
- # Just run `docker compose run --rm buf`
- #
- # All of theses services belongs to profile 'tools'
- # This will prevent to launch by normally `docker compose up` unexpectly
- # Generate typescript code of gRPC proto
- buf:
- profiles: ["tools"]
- image: bufbuild/buf
- working_dir: /work/proto
- command: generate
- volumes:
- - ./proto:/work/proto
- - ./web/src/types/:/work/web/src/types/
- # Do golang static code check before create PR
- golangci-lint:
- profiles: ["tools"]
- image: golangci/golangci-lint:v1.54.2
- working_dir: /work/
- command: golangci-lint run -v
- volumes:
- - $HOME/go/pkg/:/go/pkg/ # Cache for go mod shared with the host
- - .:/work/
- # Do javascript lint before create PR
- lint:
- profiles: ["tools"]
- image: node:18-alpine
- working_dir: /work
- command: npm run lint
- volumes:
- - ./web:/work
- - ./.air/node_modules/:/work/node_modules/
|