Configuração do ambiente de desenvolvimento
Este guia orientará você na configuração de um ambiente de desenvolvimento local para omegaUp usando Docker.
Vídeo Tutorial
Temos um vídeo tutorial que demonstra visualmente o processo de configuração.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte instalado:
- Docker Engine: Instalar Docker
- Docker Compose 2: Instalar Docker Compose
- Git: Para clonar o repositório
Usuários WSL
Se você estiver usando WSL (subsistema Windows para Linux), siga o guia oficial de integração WSL do Docker Desktop.
Configuração específica do Linux
Se você estiver executando o Linux, após instalar o Docker, adicione seu usuário ao grupo docker:
sudo usermod -a -G docker $USER
Git Conhecimento
Se você não tiver confiança no uso do Git, recomendamos a leitura este tutorial do Git primeiro.
Etapa 1: bifurcar e clonar o repositório
-
Fork do repositório: Visite github.com/omegaup/omegaup e clique no botão "Fork"
-
Clone seu garfo:
git clone --recurse-submodules https://github.com/YOURUSERNAME/omegaup cd omegaup - Inicializar submódulos (se necessário):
git submodule update --init --recursive
Etapa 2: iniciar contêineres Docker
Configuração pela primeira vez
Na primeira execução, extraia as imagens do Docker e inicie os contêineres:
docker-compose pull
docker-compose up --no-build
frontend_1 | Child frontend:
frontend_1 | 1550 modules
frontend_1 | Child HtmlWebpackCompiler:
frontend_1 | 1 module
...
Execuções subsequentes
Após a primeira execução, você pode iniciar contêineres mais rapidamente com:
docker compose up --no-build
--no-build evita reconstruir tudo, acelerando significativamente a inicialização.
docker compose versus docker-compose
O Docker Compose V2 usa o comando docker compose (com espaço). Instalações antigas podem ter o binário docker-compose; ambos funcionam se o seu Docker suportar. Este guia usa docker compose.
Etapa 3: acesse sua instância local
Assim que os contêineres estiverem em execução, acesse sua instância local do omegaUp em:
Etapa 4: acessar o console do contêiner
Para executar comandos dentro do contêiner:
docker exec -it omegaup-frontend-1 /bin/bash
/opt/omegaup dentro do contêiner.
Contas de Desenvolvimento
Sua instalação local inclui contas pré-configuradas:
Conta de administrador
- Nome de usuário:
omegaup - Senha:
omegaup - Função: Administrador (privilégios de administrador de sistema)
Conta de usuário normal
- Nome de usuário:
user - Senha:
user - Função: usuário regular
Contas de teste
Para fins de teste, você pode usar estas contas de teste:
| Nome de usuário | Senha |
|---|---|
test_user_0 |
test_user_0 |
test_user_1 |
test_user_1 |
| ... | ... |
course_test_user_0 |
course_test_user_0 |
Verificação de e-mail
No modo de desenvolvimento, a verificação de e-mail está desabilitada. Você pode usar endereços de e-mail fictícios ao criar novas contas.
Executando testes localmente
Se você deseja executar testes JavaScript/TypeScript fora do Docker:
Pré-requisitos
- Node.js: versão 16 ou superior
- Yarn: Gerenciador de pacotes
Etapas de configuração
- Inicializar submódulos Git:
Isso baixa as dependências necessárias:
git submodule update --init --recursive pagedown- Editor de reduçãoiso-3166-2.js- Códigos de país/regiãocsv.js- análise CSV-
mathjax- Renderização matemática -
Instalar dependências:
yarn install - Executar testes:
yarn test
Início rápido (novo clone)
Para um novo clone, use este único comando:
git clone --recurse-submodules https://github.com/YOURUSERNAME/omegaup
cd omegaup
yarn install
yarn test
Estrutura da base de código
A base de código omegaUp é organizada da seguinte forma:
omegaup/
├── frontend/
│ ├── server/
│ │ └── src/
│ │ ├── Controllers/ # Business logic & API endpoints
│ │ ├── DAO/ # Data Access Objects
│ │ └── libs/ # Libraries & utilities
│ ├── www/ # Frontend assets (TypeScript, Vue.js)
│ ├── templates/ # Smarty templates & i18n files
│ ├── database/ # Database migrations
│ └── tests/ # Test files
O fluxo de contribuição (branches, PRs, remotos) está em Contribuindo.
Visual Studio Code com Docker
Você pode editar no host com Visual Studio Code enquanto o Docker executa o stack.
Extensões recomendadas
- Dev Containers ou Docker para anexar a um contêiner em execução
- Extensões PHP, Vue e ESLint conforme necessário
Anexar ao contêiner frontend
- Inicie o ambiente:
docker compose up --no-build(oudocker compose upna primeira vez). - No VS Code, use Attach to Running Container e escolha o contêiner do frontend (muitas vezes
omegaup-frontend-1; vejadocker compose ps). - Na janela anexada, abra a pasta
/opt/omegaup.
Você também pode editar o clone no host: o mesmo diretório é montado em /opt/omegaup.
Vagrant / SSH legado
Se usar VM com omegaup/deploy, use Remote - SSH com a saída de vagrant ssh-config, como na documentação Remote SSH do VS Code. Para novos colaboradores, prefira Docker quando possível.
GitHub OAuth (login local com GitHub)
1. Criar o OAuth App no GitHub
- Abra GitHub Developer Settings.
- OAuth Apps → New OAuth App.
- Defina Homepage URL
http://localhost:8001/e Authorization callback URLhttp://localhost:8001/login?third_party_login=github. - Registre e copie Client ID e Client Secret.
2. Configurar o omegaUp
Crie ou edite frontend/server/config.php:
<?php
define('OMEGAUP_GITHUB_CLIENT_ID', 'your_real_client_id_here');
define('OMEGAUP_GITHUB_CLIENT_SECRET', 'your_real_client_secret_here');
Nunca faça commit de segredos OAuth
Não envie config.php com credenciais. Não use config.default.php para segredos.
Consulte também Segurança → OAuth.
Problemas comuns
O aplicativo da web não está mostrando minhas alterações
Certifique-se de que o Docker esteja em execução:
docker compose up --no-build
Navegador redireciona HTTP para HTTPS
Se o seu navegador continuar mudando http para https para localhost, você poderá desabilitar as políticas de segurança para localhost. Veja este guia.
Erro MySQL não encontrado
Se você encontrar esse erro ao enviar para o GitHub:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/mysql'
sudo apt-get install mysql-client mysql-server
cat > ~/.mysql.docker.cnf <<EOF
[client]
port=13306
host=127.0.0.1
protocol=tcp
user=root
password=omegaup
EOF
ln -sf ~/.mysql.docker.cnf .my.cnf
Erro de conexão MySQL
Se o MySQL estiver instalado, mas aparecer erro de socket, os hooks em git push esperam cliente TCP na porta 13306. Use ~/.mysql.docker.cnf e o link .my.cnf como em Contribuindo.
Submódulos Git
git submodule update --init --recursive
Reconstruir imagem frontend
docker compose build frontend
docker compose up
Permissões: phpminiadmin, venv ou loop de reinício
Causa: clone ou docker compose como root.
Solução: clone de novo como usuário normal, grupo docker, sem sudo em git clone nem em docker compose.
policy-tool / mysql ao fazer push
Instale o cliente MySQL no host e configure TCP como acima. Ambiente de deploy: omegaup/deploy/issues.
Próximas etapas
- Aprenda como contribuir - Crie ramificações e envie solicitações pull
- Revise as diretrizes de codificação - Entenda nossos padrões de codificação
- Explore a arquitetura - Entenda como o omegaUp funciona
Obtendo ajuda
Se você encontrar problemas não abordados aqui:
- Verifique o Guia de ajuda
- Pesquise issues existentes no GitHub
- Pergunte em nosso servidor Discord
Pronto para começar a codificar? Acesse o Guia de contribuição para saber como enviar sua primeira solicitação pull!