mirror of https://github.com/mastodon/mastodon
				
				
				
			Add DevContainer config (#17764)
* Add DevContainer config * Add `--path vendor/bundle` to `postCreateCommand`pull/17765/head
							parent
							
								
									71e7d38421
								
							
						
					
					
						commit
						74f406cfc9
					
				@ -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
 | 
			
		||||
@ -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"
 | 
			
		||||
}
 | 
			
		||||
@ -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…
					
					
				
		Reference in New Issue