forked from berserker/microblog
Add DevContainer config (#17764)
* Add DevContainer config * Add `--path vendor/bundle` to `postCreateCommand`main
parent
71e7d38421
commit
74f406cfc9
3 changed files with 134 additions and 0 deletions
@ -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