Dev Containerの設定を追加 (#9872)
* Dev Containerの設定を追加 * テンプレート生成時に含まれていたコメントを削除 * 起動スクリプトを分割 JSONの中にベタ書きすると長くなるので * 改行 * Dev Containerの使用方法を追記
This commit is contained in:
		
							parent
							
								
									ac7e2ecb59
								
							
						
					
					
						commit
						3c7e1ff92e
					
				
					 7 changed files with 239 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								.devcontainer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.devcontainer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
FROM mcr.microsoft.com/devcontainers/javascript-node:0-18
 | 
			
		||||
							
								
								
									
										11
									
								
								.devcontainer/devcontainer.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.devcontainer/devcontainer.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{
 | 
			
		||||
	"name": "Misskey",
 | 
			
		||||
	"dockerComposeFile": "docker-compose.yml",
 | 
			
		||||
	"service": "app",
 | 
			
		||||
	"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
 | 
			
		||||
	"features": {
 | 
			
		||||
		"ghcr.io/devcontainers-contrib/features/pnpm:2": {}
 | 
			
		||||
	},
 | 
			
		||||
	"forwardPorts": [3000],
 | 
			
		||||
	"postCreateCommand": ".devcontainer/init.sh"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										146
									
								
								.devcontainer/devcontainer.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								.devcontainer/devcontainer.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,146 @@
 | 
			
		|||
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
			
		||||
# Misskey configuration
 | 
			
		||||
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
			
		||||
 | 
			
		||||
#   ┌─────┐
 | 
			
		||||
#───┘ URL └─────────────────────────────────────────────────────
 | 
			
		||||
 | 
			
		||||
# Final accessible URL seen by a user.
 | 
			
		||||
url: http://127.0.0.1:3000/
 | 
			
		||||
 | 
			
		||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
 | 
			
		||||
# URL SETTINGS AFTER THAT!
 | 
			
		||||
 | 
			
		||||
#   ┌───────────────────────┐
 | 
			
		||||
#───┘ Port and TLS settings └───────────────────────────────────
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Misskey requires a reverse proxy to support HTTPS connections.
 | 
			
		||||
#
 | 
			
		||||
#                 +----- https://example.tld/ ------------+
 | 
			
		||||
#   +------+      |+-------------+      +----------------+|
 | 
			
		||||
#   | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
 | 
			
		||||
#   +------+      |+-------------+      +----------------+|
 | 
			
		||||
#                 +---------------------------------------+
 | 
			
		||||
#
 | 
			
		||||
#   You need to set up a reverse proxy. (e.g. nginx)
 | 
			
		||||
#   An encrypted connection with HTTPS is highly recommended
 | 
			
		||||
#   because tokens may be transferred in GET requests.
 | 
			
		||||
 | 
			
		||||
# The port that your Misskey server should listen on.
 | 
			
		||||
port: 3000
 | 
			
		||||
 | 
			
		||||
#   ┌──────────────────────────┐
 | 
			
		||||
#───┘ PostgreSQL configuration └────────────────────────────────
 | 
			
		||||
 | 
			
		||||
db:
 | 
			
		||||
  host: db
 | 
			
		||||
  port: 5432
 | 
			
		||||
 | 
			
		||||
  # Database name
 | 
			
		||||
  db: misskey
 | 
			
		||||
 | 
			
		||||
  # Auth
 | 
			
		||||
  user: postgres
 | 
			
		||||
  pass: postgres
 | 
			
		||||
 | 
			
		||||
  # Whether disable Caching queries
 | 
			
		||||
  #disableCache: true
 | 
			
		||||
 | 
			
		||||
  # Extra Connection options
 | 
			
		||||
  #extra:
 | 
			
		||||
  #  ssl: true
 | 
			
		||||
 | 
			
		||||
#   ┌─────────────────────┐
 | 
			
		||||
#───┘ Redis configuration └─────────────────────────────────────
 | 
			
		||||
 | 
			
		||||
redis:
 | 
			
		||||
  host: redis
 | 
			
		||||
  port: 6379
 | 
			
		||||
  #family: 0  # 0=Both, 4=IPv4, 6=IPv6
 | 
			
		||||
  #pass: example-pass
 | 
			
		||||
  #prefix: example-prefix
 | 
			
		||||
  #db: 1
 | 
			
		||||
 | 
			
		||||
#   ┌─────────────────────────────┐
 | 
			
		||||
#───┘ Elasticsearch configuration └─────────────────────────────
 | 
			
		||||
 | 
			
		||||
#elasticsearch:
 | 
			
		||||
#  host: localhost
 | 
			
		||||
#  port: 9200
 | 
			
		||||
#  ssl: false
 | 
			
		||||
#  user:
 | 
			
		||||
#  pass:
 | 
			
		||||
 | 
			
		||||
#   ┌───────────────┐
 | 
			
		||||
#───┘ ID generation └───────────────────────────────────────────
 | 
			
		||||
 | 
			
		||||
# You can select the ID generation method.
 | 
			
		||||
# You don't usually need to change this setting, but you can
 | 
			
		||||
# change it according to your preferences.
 | 
			
		||||
 | 
			
		||||
# Available methods:
 | 
			
		||||
# aid ... Short, Millisecond accuracy
 | 
			
		||||
# meid ... Similar to ObjectID, Millisecond accuracy
 | 
			
		||||
# ulid ... Millisecond accuracy
 | 
			
		||||
# objectid ... This is left for backward compatibility
 | 
			
		||||
 | 
			
		||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
 | 
			
		||||
# ID SETTINGS AFTER THAT!
 | 
			
		||||
 | 
			
		||||
id: 'aid'
 | 
			
		||||
 | 
			
		||||
#   ┌─────────────────────┐
 | 
			
		||||
#───┘ Other configuration └─────────────────────────────────────
 | 
			
		||||
 | 
			
		||||
# Whether disable HSTS
 | 
			
		||||
#disableHsts: true
 | 
			
		||||
 | 
			
		||||
# Number of worker processes
 | 
			
		||||
#clusterLimit: 1
 | 
			
		||||
 | 
			
		||||
# Job concurrency per worker
 | 
			
		||||
# deliverJobConcurrency: 128
 | 
			
		||||
# inboxJobConcurrency: 16
 | 
			
		||||
 | 
			
		||||
# Job rate limiter
 | 
			
		||||
# deliverJobPerSec: 128
 | 
			
		||||
# inboxJobPerSec: 16
 | 
			
		||||
 | 
			
		||||
# Job attempts
 | 
			
		||||
# deliverJobMaxAttempts: 12
 | 
			
		||||
# inboxJobMaxAttempts: 8
 | 
			
		||||
 | 
			
		||||
# IP address family used for outgoing request (ipv4, ipv6 or dual)
 | 
			
		||||
#outgoingAddressFamily: ipv4
 | 
			
		||||
 | 
			
		||||
# Proxy for HTTP/HTTPS
 | 
			
		||||
#proxy: http://127.0.0.1:3128
 | 
			
		||||
 | 
			
		||||
proxyBypassHosts:
 | 
			
		||||
  - api.deepl.com
 | 
			
		||||
  - api-free.deepl.com
 | 
			
		||||
  - www.recaptcha.net
 | 
			
		||||
  - hcaptcha.com
 | 
			
		||||
  - challenges.cloudflare.com
 | 
			
		||||
 | 
			
		||||
# Proxy for SMTP/SMTPS
 | 
			
		||||
#proxySmtp: http://127.0.0.1:3128   # use HTTP/1.1 CONNECT
 | 
			
		||||
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4
 | 
			
		||||
#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5
 | 
			
		||||
 | 
			
		||||
# Media Proxy
 | 
			
		||||
#mediaProxy: https://example.com/proxy
 | 
			
		||||
 | 
			
		||||
# Proxy remote files (default: false)
 | 
			
		||||
#proxyRemoteFiles: true
 | 
			
		||||
 | 
			
		||||
# Sign to ActivityPub GET request (default: true)
 | 
			
		||||
signToActivityPubGet: true
 | 
			
		||||
 | 
			
		||||
allowedPrivateNetworks: [
 | 
			
		||||
  '127.0.0.1/32'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# Upload or download file size limits (bytes)
 | 
			
		||||
#maxFileSize: 262144000
 | 
			
		||||
							
								
								
									
										52
									
								
								.devcontainer/docker-compose.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								.devcontainer/docker-compose.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
version: '3.8'
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  app:
 | 
			
		||||
    build: 
 | 
			
		||||
      context: .
 | 
			
		||||
      dockerfile: Dockerfile
 | 
			
		||||
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ../..:/workspaces:cached
 | 
			
		||||
 | 
			
		||||
    command: sleep infinity
 | 
			
		||||
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal_network
 | 
			
		||||
      - external_network
 | 
			
		||||
 | 
			
		||||
  redis:
 | 
			
		||||
    restart: always
 | 
			
		||||
    image: redis:7-alpine
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal_network
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ../redis:/data
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: "redis-cli ping"
 | 
			
		||||
      interval: 5s
 | 
			
		||||
      retries: 20
 | 
			
		||||
 | 
			
		||||
  db:
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    image: postgres:15-alpine
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal_network
 | 
			
		||||
    environment:
 | 
			
		||||
      POSTGRES_USER: postgres
 | 
			
		||||
      POSTGRES_PASSWORD: postgres
 | 
			
		||||
      POSTGRES_DB: misskey
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ../db:/var/lib/postgresql/data
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
 | 
			
		||||
      interval: 5s
 | 
			
		||||
      retries: 20
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  postgres-data:
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  internal_network:
 | 
			
		||||
    internal: true
 | 
			
		||||
  external_network:
 | 
			
		||||
							
								
								
									
										9
									
								
								.devcontainer/init.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								.devcontainer/init.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -xe
 | 
			
		||||
 | 
			
		||||
git submodule update --init
 | 
			
		||||
pnpm install --frozen-lockfile
 | 
			
		||||
cp .devcontainer/devcontainer.yml .config/default.yml
 | 
			
		||||
pnpm build
 | 
			
		||||
pnpm migrate
 | 
			
		||||
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -33,6 +33,7 @@ coverage
 | 
			
		|||
!/.config/docker_example.yml
 | 
			
		||||
!/.config/docker_example.env
 | 
			
		||||
docker-compose.yml
 | 
			
		||||
!/.devcontainer/docker-compose.yml
 | 
			
		||||
 | 
			
		||||
# misskey
 | 
			
		||||
/build
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,6 +111,25 @@ command.
 | 
			
		|||
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
 | 
			
		||||
- Service Worker is watched by esbuild.
 | 
			
		||||
 | 
			
		||||
### Dev Container
 | 
			
		||||
Instead of running `pnpm` locally, you can use Dev Container to set up your development environment.
 | 
			
		||||
To use Dev Container, open the project directory on VSCode with Dev Containers installed.
 | 
			
		||||
 | 
			
		||||
It will run the following command automatically inside the container.
 | 
			
		||||
``` bash
 | 
			
		||||
git submodule update --init
 | 
			
		||||
pnpm install --frozen-lockfile
 | 
			
		||||
cp .devcontainer/devcontainer.yml .config/default.yml
 | 
			
		||||
pnpm build
 | 
			
		||||
pnpm migrate
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
After finishing the migration, run the `pnpm dev` command to start the development server.
 | 
			
		||||
 | 
			
		||||
``` bash
 | 
			
		||||
pnpm dev
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Testing
 | 
			
		||||
- Test codes are located in [`/packages/backend/test`](/packages/backend/test).
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue