* Add DevContainer config * Add `--path vendor/bundle` to `postCreateCommand`closed-social-glitch-2
@ -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 |