Add DevContainer config (#17764)
* Add DevContainer config * Add `--path vendor/bundle` to `postCreateCommand`
This commit is contained in:
		
					parent
					
						
							
								71e7d38421
							
						
					
				
			
			
				commit
				
					
						74f406cfc9
					
				
			
		
					 3 changed files with 134 additions and 0 deletions
				
			
		
							
								
								
									
										24
									
								
								.devcontainer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.devcontainer/Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| # [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.1, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.1-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.1-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster | ||||
| ARG VARIANT=3.1-bullseye | ||||
| FROM mcr.microsoft.com/vscode/devcontainers/ruby:${VARIANT} | ||||
| 
 | ||||
| # Install Rails | ||||
| # RUN gem install rails webdrivers | ||||
| 
 | ||||
| # Default value to allow debug server to serve content over GitHub Codespace's port forwarding service | ||||
| # The value is a comma-separated list of allowed domains | ||||
| ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev" | ||||
| 
 | ||||
| # [Choice] Node.js version: lts/*, 16, 14, 12, 10 | ||||
| ARG NODE_VERSION="lts/*" | ||||
| RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1" | ||||
| 
 | ||||
| # [Optional] Uncomment this section to install additional OS packages. | ||||
| RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||||
|     && apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libpam-dev | ||||
| 
 | ||||
| # [Optional] Uncomment this line to install additional gems. | ||||
| RUN gem install foreman | ||||
| 
 | ||||
| # [Optional] Uncomment this line to install global node packages. | ||||
| RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g yarn" 2>&1 | ||||
							
								
								
									
										26
									
								
								.devcontainer/devcontainer.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.devcontainer/devcontainer.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| { | ||||
|   "name": "Mastodon", | ||||
|   "dockerComposeFile": "docker-compose.yml", | ||||
|   "service": "app", | ||||
|   "workspaceFolder": "/workspaces/mastodon", | ||||
| 
 | ||||
|   // Set *default* container specific settings.json values on container create. | ||||
| 	"settings": {}, | ||||
| 
 | ||||
|   // Add the IDs of extensions you want installed when the container is created. | ||||
| 	"extensions": [ | ||||
|     "EditorConfig.EditorConfig", | ||||
|     "dbaeumer.vscode-eslint", | ||||
| 		"rebornix.Ruby" | ||||
| 	], | ||||
| 
 | ||||
|   // Use 'forwardPorts' to make a list of ports inside the container available locally. | ||||
| 	// This can be used to network with other containers or the host. | ||||
| 	"forwardPorts": [3000, 4000], | ||||
| 
 | ||||
| 	// Use 'postCreateCommand' to run commands after the container is created. | ||||
| 	"postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup", | ||||
| 
 | ||||
| 	// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. | ||||
| 	"remoteUser": "vscode" | ||||
| } | ||||
							
								
								
									
										84
									
								
								.devcontainer/docker-compose.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								.devcontainer/docker-compose.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,84 @@ | |||
| version: '3' | ||||
| 
 | ||||
| services: | ||||
|   app: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: Dockerfile | ||||
|       args: | ||||
|         # Update 'VARIANT' to pick a version of Ruby: 3, 3.1, 3.0, 2, 2.7, 2.6 | ||||
|         # Append -bullseye or -buster to pin to an OS version. | ||||
|         # Use -bullseye variants on local arm64/Apple Silicon. | ||||
|         VARIANT: "3.0-bullseye" | ||||
|         # Optional Node.js version to install | ||||
|         NODE_VERSION: "14" | ||||
|     volumes: | ||||
|       - ..:/workspaces/mastodon:cached | ||||
|     environment: | ||||
|       RAILS_ENV: development | ||||
|       NODE_ENV: development | ||||
| 
 | ||||
|       REDIS_HOST: redis | ||||
|       REDIS_PORT: '6379' | ||||
|       DB_HOST: db | ||||
|       DB_USER: postgres | ||||
|       DB_PASS: postgres | ||||
|       DB_PORT: '5432' | ||||
|       ES_ENABLED: 'true' | ||||
|       ES_HOST: es | ||||
|       ES_PORT: '9200' | ||||
|     # Overrides default command so things don't shut down after the process ends. | ||||
|     command: sleep infinity | ||||
|     networks: | ||||
|       - external_network | ||||
|       - internal_network | ||||
|     user: vscode | ||||
| 
 | ||||
| 
 | ||||
|   db: | ||||
|     image: postgres:14-alpine | ||||
|     restart: unless-stopped | ||||
|     volumes: | ||||
|       - postgres-data:/var/lib/postgresql/data | ||||
|     environment: | ||||
|       POSTGRES_USER: postgres | ||||
|       POSTGRES_DB: postgres | ||||
|       POSTGRES_PASSWORD: postgres | ||||
|       POSTGRES_HOST_AUTH_METHOD: trust | ||||
|     networks: | ||||
|       - internal_network | ||||
| 
 | ||||
|   redis: | ||||
|     image: redis:6-alpine | ||||
|     restart: unless-stopped | ||||
|     volumes: | ||||
|       - redis-data:/data | ||||
|     networks: | ||||
|       - internal_network | ||||
| 
 | ||||
|   es: | ||||
|     image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 | ||||
|     restart: unless-stopped | ||||
|     environment: | ||||
|       ES_JAVA_OPTS: -Xms512m -Xmx512m | ||||
|       cluster.name: es-mastodon | ||||
|       discovery.type: single-node | ||||
|       bootstrap.memory_lock: 'true' | ||||
|     volumes: | ||||
|       - es-data:/usr/share/elasticsearch/data | ||||
|     networks: | ||||
|       - internal_network | ||||
|     ulimits: | ||||
|       memlock: | ||||
|         soft: -1 | ||||
|         hard: -1 | ||||
| 
 | ||||
| volumes: | ||||
|   postgres-data: | ||||
|   redis-data: | ||||
|   es-data: | ||||
| 
 | ||||
| networks: | ||||
|   external_network: | ||||
|   internal_network: | ||||
|     internal: true | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue