Skip to content

Commit

Permalink
feat: update devcontainer
Browse files Browse the repository at this point in the history
  • Loading branch information
ttngu207 authored Sep 27, 2024
1 parent 780352b commit bba3f33
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 45 deletions.
34 changes: 7 additions & 27 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,30 +1,12 @@
FROM python:3.9-slim@sha256:5f0192a4f58a6ce99f732fe05e3b3d00f12ae62e183886bca3ebe3d202686c7f

ENV PATH /usr/local/bin:$PATH
ENV PYTHON_VERSION 3.9.17

RUN \
adduser --system --disabled-password --shell /bin/bash vscode && \
# install docker
apt-get update && \
apt-get install ca-certificates curl gnupg lsb-release -y && \
mkdir -m 0755 -p /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update && \
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y && \
usermod -aG docker vscode && \
apt-get clean
ARG PY_VER
ARG DISTRO
FROM mcr.microsoft.com/devcontainers/python:${PY_VER}-${DISTRO}

RUN \
# dev setup
apt update && \
apt-get install sudo git bash-completion graphviz default-mysql-client s3fs procps -y && \
usermod -aG sudo vscode && \
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
pip install --no-cache-dir --upgrade black pip nbconvert && \
echo '. /etc/bash_completion' >> /home/vscode/.bashrc && \
echo 'export PS1="\[\e[32;1m\]\u\[\e[m\]@\[\e[34;1m\]\H\[\e[m\]:\[\e[33;1m\]\w\[\e[m\]$ "' >> /home/vscode/.bashrc && \
pip install --no-cache-dir --upgrade black faker ipykernel pip && \
apt-get clean

COPY ./ /tmp/element-array-ephys/
Expand All @@ -37,12 +19,10 @@ RUN \
rm -rf /tmp/element-array-ephys && \
apt-get clean

ENV DJ_HOST fakeservices.datajoint.io
USER root
ENV DJ_HOST db
ENV DJ_USER root
ENV DJ_PASS simple

ENV EPHYS_ROOT_DATA_DIR /workspaces/element-array-ephys/example_data
ENV DATABASE_PREFIX neuro_

USER vscode
CMD bash -c "sudo rm /var/run/docker.pid; sudo dockerd"
ENV DATABASE_PREFIX neuro_
24 changes: 19 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,43 @@
{
"name": "Environment + Data",
"dockerComposeFile": "docker-compose.yaml",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.yaml"
],
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"remoteEnv": {
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
},
"onCreateCommand": "mkdir -p ${EPHYS_ROOT_DATA_DIR} && pip install -e .",
"postStartCommand": "docker volume prune -f && s3fs ${DJ_PUBLIC_S3_LOCATION} ${EPHYS_ROOT_DATA_DIR} -o nonempty,multipart_size=530,endpoint=us-east-1,url=http://s3.amazonaws.com,public_bucket=1",
"shutdownAction": "stopCompose",
"postStartCommand": "s3fs ${DJ_PUBLIC_S3_LOCATION} ${EPHYS_ROOT_DATA_DIR} -o nonempty,multipart_size=530,endpoint=us-east-1,url=http://s3.amazonaws.com,public_bucket=1",
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
},
"forwardPorts": [
3306
3306,
80,
443,
3306,
8080,
9000
],
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"customizations": {
"settings": {
"python.pythonPath": "/usr/local/bin/python"
},
"vscode": {
"extensions": [
"ms-python.python@2023.8.0",
"ms-toolsai.jupyter@2023.3.1201040234"
"ms-python.python",
"ms-toolsai.jupyter"
]
}
}
Expand Down
14 changes: 8 additions & 6 deletions .devcontainer/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
version: "3"
services:
app:
cpus: 4
mem_limit: 8g
build:
context: ..
dockerfile: ./.devcontainer/Dockerfile
# image: datajoint/element_array_ephys:latest
extra_hosts:
- fakeservices.datajoint.io:127.0.0.1
args:
- PY_VER=${PY_VER:-3.11}
- DISTRO=${DISTRO:-buster}
image: datajoint/element_array_ephys:latest
environment:
- DJ_PUBLIC_S3_LOCATION=djhub.vathes.datapub.elements:/workflow-array-ephys-benchmark/v2
devices:
Expand All @@ -18,8 +18,10 @@ services:
security_opt:
- apparmor:unconfined
volumes:
- ..:/workspaces/element-array-ephys:cached
- ..:/workspaces:cached
- docker_data:/var/lib/docker # persist docker images
privileged: true # only because of dind
user: root
# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"
volumes:
docker_data:
12 changes: 5 additions & 7 deletions docker-compose-db.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# MYSQL_VER=8.0 docker compose -f docker-compose-db.yaml up --build
version: "3"
# MYSQL_VER=8.0 docker compose up --build
services:
db:
restart: always
image: datajoint/mysql:${MYSQL_VER}
image: datajoint/mysql:${MYSQL_VER:-8.0}
environment:
- MYSQL_ROOT_PASSWORD=${DJ_PASS}
ports:
- "3306:3306"
- MYSQL_ROOT_PASSWORD=${DJ_PASS:-simple}
command: mysqld --default-authentication-plugin=mysql_native_password
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
timeout: 15s
retries: 10
interval: 15s
interval: 15s

0 comments on commit bba3f33

Please sign in to comment.