build(elixir): add dev container
This commit is contained in:
47
.devcontainer/Dockerfile
Normal file
47
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,47 @@
|
||||
# Use the official Elixir image with OTP 26 and Elixir 1.15
|
||||
FROM elixir:1.15-otp-26-slim
|
||||
|
||||
# Install system dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git \
|
||||
curl \
|
||||
build-essential \
|
||||
inotify-tools \
|
||||
postgresql-client \
|
||||
sudo \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Node.js 20 (needed for assets compilation)
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
||||
&& apt-get install -y nodejs
|
||||
|
||||
# Create a non-root user
|
||||
RUN groupadd --gid 1000 vscode \
|
||||
&& useradd --uid 1000 --gid vscode --shell /bin/bash --create-home vscode \
|
||||
&& echo 'vscode ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /workspace
|
||||
|
||||
# Copy the project files
|
||||
COPY --chown=vscode:vscode . /workspace
|
||||
|
||||
# Install Hex and Rebar
|
||||
RUN mix local.hex --force && \
|
||||
mix local.rebar --force
|
||||
|
||||
# Switch to vscode user
|
||||
USER vscode
|
||||
|
||||
# Install Phoenix
|
||||
RUN mix archive.install hex phx_new --force
|
||||
|
||||
# Set environment variables
|
||||
ENV MIX_ENV=dev
|
||||
ENV PHX_SERVER=true
|
||||
|
||||
# Expose port 4000 for Phoenix
|
||||
EXPOSE 4000
|
||||
|
||||
# Default command
|
||||
CMD ["tail", "-f", "/dev/null"]
|
||||
Reference in New Issue
Block a user