Este repositório contém um ambiente de desenvolvimento completo utilizando Docker, pronto para Rust.
O ambiente foi configurado para ser usado com IDEs ou Editores compatíves com Docker.
services/Arquivos de configuração do ambienteservices/rust-slim/Dockerfile do Rust.envArquivo contendo variáveis de ambiente (portas, usuários, senhas)docker-compose.ymlOrquestração dos serviços (Rust, etc.)app/Código-fonte dos projetos (montado nos containers)app/hello_cargoPasta de um projeto de exemplo
project-root/
├─ services/
│ └─ rust_slim/
├─ docker-compose.yml
├─ .env
└─ app/
└─ hello_cargo/
- Docker e Docker Compose instalados
- Sistema operacional compatível (Linux, macOS ou Windows)
- Copie o conteúdo do arquivo
env.examplepara.enve ajuste as variáveis conforme necessário:
# Nome base para todos os containers
CONTAINER_NAME=dev_container
# UID/GID para evitar problemas de permissão com volumes
PUID=1000
PGID=1000
# Rust
RUST_VERSION=1.98
RUST_PORT=8080- Montar o ambiente com os dados do Docker Compose:
docker compose build --no-cachebuildgarante que as imagens sejam construídas ignorando o cache com a flag--no-cachecaso haja alterações no Dockerfile.- O Rust estará disponível na versão definida em
RUST_VERSIONe na porta definida emRUST_PORT.
- Código-fonte é montado no host em
/apppara/appdentro do container - O cache do Cargo persiste no volume
cargo_cache
Acessar terminal do container Rust:
docker exec -it dev_container_rust bashExecutar o Cargo dentro do container Rust:
docker exec dev_container_rust cargo --versionExecutar o Rustc dentro do container Rust:
docker exec dev_container_rust rustc --versionExecutar o Rustup dentro do container Rust:
docker exec dev_container_rust rustup --version- Abra o seu terminal e digite:
sudo nano ~/.bashrc
- Adicione o seguinte trecho de código ao seu
~/.bashrc:
# Funcao para Rust no container
docker_rust_tools() {
local tool="$1"
shift
local container=$(docker ps --format '{{.Names}}' | grep '_rust$' | head -n 1)
local rel_path="${PWD#*/app}"
if [ -n "$container" ]; then
docker exec -it -w "/app${rel_path}" "$container" "$tool" "$@"
else
echo "Nenhum container Rust em execução. Rodando '$tool' no host."
command "$tool" "$@"
fi
}
alias cargo='docker_rust_tools cargo'
alias rustc='docker_rust_tools rustc'
alias rustup='docker_rust_tools rustup'
- Depois, recarregue o Bash:
source ~/.bashrcComo usar:
# Rodar comandos do rustc direto no container
rustc --version (exemplo de comando)
# Rodar comandos do cargo direto no container
cargo --version (exemplo de comando)
# Rodar comandos do rustup direto no container
rustup --version (exemplo de comando)- O comando só funciona no diretório de projetos
appe nos diretórios filhos. - O comando detecta automaticamente o container do projeto que utiliza este repositório.
- Caso o container não esteja rodando, o comando será executado no host.
Feito para simplificar o desenvolvimento em projetos Rust modernos em containers separados, mas trabalhando de forma integrada com a IDE.