memos/scripts/docker-compose.dev.yaml
Athurg Gooth d626de1875
fix: pnpm install failed in docker (#2732)
fix pnpm install failed in docker
2024-01-11 21:29:55 +08:00

75 lines
2.1 KiB
YAML

version: "3.0"
name: memos-dev
services:
db:
image: mysql
volumes:
- ./../.air/mysql:/var/lib/mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: memos
api:
image: cosmtrek/air
working_dir: /work
command: ["-c", "./scripts/.air.toml"]
environment:
- "MEMOS_DSN=root@tcp(db)/memos"
- "MEMOS_DRIVER=mysql"
volumes:
- ./..:/work/
- ./../.air/go-build:/root/.cache/go-build
- $HOME/go/pkg/:/go/pkg/ # Cache for go mod shared with the host
web:
image: node:20-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 i --frozen-lockfile && pnpm dev"]
tmpfs: /work/node_modules/:exec # To avoid pnpm ERR_PNPM_LINKING_FAILED error
volumes:
- ./../web:/work
# 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/
entrypoint: golangci-lint
command: run -v
volumes:
- $HOME/go/pkg/:/go/pkg/ # Cache for go mod shared with the host
- ./../.air/go-build:/root/.cache/go-build
- ./..:/work/
# run npm
npm:
profiles: ["tools"]
image: node:20-alpine
working_dir: /work
environment: ["NPM_CONFIG_UPDATE_NOTIFIER=false"]
entrypoint: "npm"
volumes:
- ./../web:/work