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.yml
 | 
				
			||||||
!/.config/docker_example.env
 | 
					!/.config/docker_example.env
 | 
				
			||||||
docker-compose.yml
 | 
					docker-compose.yml
 | 
				
			||||||
 | 
					!/.devcontainer/docker-compose.yml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# misskey
 | 
					# misskey
 | 
				
			||||||
/build
 | 
					/build
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,6 +111,25 @@ command.
 | 
				
			||||||
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
 | 
					- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
 | 
				
			||||||
- Service Worker is watched by esbuild.
 | 
					- 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
 | 
					## Testing
 | 
				
			||||||
- Test codes are located in [`/packages/backend/test`](/packages/backend/test).
 | 
					- Test codes are located in [`/packages/backend/test`](/packages/backend/test).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue