123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- services:
- db:
- image: mysql
- volumes:
- - ./.air/mysql:/var/lib/mysql
- api:
- image: cosmtrek/air
- working_dir: /work
- command: ["-c", "./scripts/.air.toml"]
- environment:
- - "MEMOS_DSN=root@tcp(db)/memos"
- - "MEMOS_DRIVER=mysql"
- volumes:
- - .:/work/
- - $HOME/go/pkg/:/go/pkg/ # Cache for go mod shared with the host
- web:
- image: node:18-alpine
- working_dir: /work
- depends_on: ["api"]
- ports: ["3001:3001"]
- environment: ["DEV_PROXY_SERVER=http://api:8081/"]
- entrypoint: ["/bin/sh", "-c"]
- command: ["corepack enable && pnpm install && pnpm 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/
|