{"id":19439744,"url":"https://github.com/vs0uz4/restful-nodejs-restify-docker","last_synced_at":"2026-05-01T21:02:28.079Z","repository":{"id":67301267,"uuid":"103758387","full_name":"vs0uz4/restful-nodejs-restify-docker","owner":"vs0uz4","description":"RESTful com Node.js, Restify e MySQL tudo Dockerizado","archived":false,"fork":false,"pushed_at":"2017-10-24T18:27:49.000Z","size":115,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-25T07:24:41.891Z","etag":null,"topics":["mysql","node","nodejs","nodemon","restful","restful-api","restful-webservices","restify"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=MAcCWy8T-1Q\u0026list=PLFJmwzuHdBRTBbkyH0gATtDhj6ikOIkMy","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vs0uz4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-16T14:30:37.000Z","updated_at":"2017-10-24T12:45:28.000Z","dependencies_parsed_at":"2023-02-28T15:16:08.584Z","dependency_job_id":null,"html_url":"https://github.com/vs0uz4/restful-nodejs-restify-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vs0uz4/restful-nodejs-restify-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs0uz4%2Frestful-nodejs-restify-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs0uz4%2Frestful-nodejs-restify-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs0uz4%2Frestful-nodejs-restify-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs0uz4%2Frestful-nodejs-restify-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vs0uz4","download_url":"https://codeload.github.com/vs0uz4/restful-nodejs-restify-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs0uz4%2Frestful-nodejs-restify-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mysql","node","nodejs","nodemon","restful","restful-api","restful-webservices","restify"],"created_at":"2024-11-10T15:26:34.225Z","updated_at":"2026-05-01T21:02:28.042Z","avatar_url":"https://github.com/vs0uz4.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# restful-nodejs-restify\nRESTful com Node.js, Restify e MySQL em Ambiente Dockerizado\n\n\u003e Este projeto foi desenvolvido durante o acompanhamento da série de screencasts disponível em [https://www.youtube.com/playlist?list=PLFJmwzuHdBRTBbkyH0gATtDhj6ikOIkMy](https://www.youtube.com/playlist?list=PLFJmwzuHdBRTBbkyH0gATtDhj6ikOIkMy) que é pré-requisito para o curso **Single Page Application com Vue.js** [http://www.treinatom.com.br/pt/edukee/detalhes-do-evento/190edc6b7593e3081a858f55652abd92a9d07353](http://www.treinatom.com.br/pt/edukee/detalhes-do-evento/190edc6b7593e3081a858f55652abd92a9d07353).\n\n## Pré-requisitos\n- **Node.js** versão 8 ou superior;\n- **Nodemon** - `npm i -g nodemon`;\n- **Docker** versão 17.07 ou superior;\n- **Docker Compose** versão 1.16.1 ou superior;\n- **Ambientum**.\n\n## Adaptações\nComo tenho preferência por trabalhar em ambientes dockerizados, fiz algumas adaptações no projeto, implementando um container docker para rodar a aplicação, fazendo uso do **[Ambientum](https://github.com/codecasts/ambientum)**.\n\n\u003e E qual a vantagem dessas adaptações que fiz? Existem diversas vantagens, mas vou apenas frisar uma delas, que é a não obrigação de instalação e preparação de todo um ambiente de desenvolvimento. Que necessitaria a instalação por exemplo do nodejs, npm, mysql e etc.\n\n## Mas o que é? E o que faz esse tal Ambientum?\nO Ambientum é um conjunto de imagens **[Docker](https://www.docker.com/)** desenvolvidas, mantidas e distribuidas pelo **[CODECASTS](https://codecasts.com.br)**. E ele pode lhe ajudar com algumas coisas incríveis, os 3 cenários mais comuns estão listados a seguir:\n\n- **Rodar Laravel e/ou Vue.JS em Desenvolvimento.**\n- **Rodar Laravel e/ou Vue.JS em Produção (Includindo Integração Contínua).**\n- **Substituir dependências locais com comandos que rodam no Docker.**\n\n## Blz, e o que eu Preciso Saber Antes de Começar?\n\nSem sombra de dúvidas, o Ambientum irá facilitar a sua vida em muito, principalmente no que diz respeito a ambientes de desenvolvimento dockerizados, mas antes de você começar a brincar com o Ambientum, alguns conhecimentos são necessários:\n\n* O básico sobre Docker e Containers.\n* Estar confortável usando a linha de comando.\n* Saber operar o docker-compose.\n* Ler o **README** do Ambientum.\n\nMas não se preocupem, o readme está escrito em dois idiomas: Inglês e Português.\n\n## Instalação e Execução\n\n1. Faça o clone do repositório e no terminal navegue até a pasta criada com os comandos abaixo:\n\n```\ngit clone git@github.com:vs0uz4/restful-nodejs-restify.git\ncd restful-nodejs-restify\n```\n\n2. Faça uma cópia do `.env.example` para um novo arquivo com nome de `.env` e preencha os valores das variáveis de acordo com as variáveis de ambiente configuradas no arquivo docker-compose.yml. \n\n```\ncp .env.example .env\n```\n\nExemplo de configuração das variáveis.\n```\nSERVER_PORT=3456\n\nMYSQL_HOST=mysql\nMYSQL_USERNAME=restful_ws\nMYSQL_PASSWORD=restful_ws\nMYSQL_DATABASE=restful_ws\nMYSQL_TEST_DATABASE=restful_ws_test\n\nJWT_SECRET=bf21391faaa389b98d62053230feba28a288fd93\n```\n\n\u003e As variáveis de ambiente para configuração da `porta` do servidor e as relacionadas ao banco de dados `mysql`, devem obrigatoriamente coincidirem com as mesmas informadas no arquivo docker-compose.yml.\n\n3. Instale as dependências globais e de desenvolvimento no container com os comandos abaixo:\n\n```\ndocker-compose run web npm i -g npm nodemon\ndocker-compose run web npm i\n```\n\n4. Inicialize os containers.\n\n```\ndocker-compose up\n```\n\n5. Crie as tabelas da base de dados principal com os comandos abaixo:\n\n```\ndocker-compose exec mysql mysql -uroot -prestful_ws\n\nUSE `restful_ws`;\n\nCREATE TABLE `categories` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n  `name` varchar(255) DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;\n\nCREATE TABLE `users` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n  `email` varchar(255) DEFAULT NULL,\n  `password` varchar(40) DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;\n```\n\n\u003e Sem desconectar e/ou sair do mysql, siga os passos seguintes.\n\n6. Adicione a base principal, um usuário padrão para podermos nos conectar posteriormente. \n\n```\nINSERT INTO `users` (email, password) VALUES ('admin@example.com', SHA1('123456'));\n```\n\n7. Crie a base de dados de teste, suas respectivas tabelas e aplique as políticas de segurança no MYSQL para o usuário da aplicação.\n\n```\nCREATE DATABASE `restful_ws_test`;\n\nUSE `restful_ws_test`;\n\nCREATE TABLE `categories` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n  `name` varchar(255) DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;\n\nCREATE TABLE `users` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n  `email` varchar(255) DEFAULT NULL,\n  `password` varchar(40) DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;\n\nGRANT ALL ON restful_ws.* TO 'restful_ws'@'%';\nGRANT ALL ON restful_ws_test.* TO 'restful_ws'@'%';\nFLUSH PRIVILEGES;\n```\n\n\u003e Após o termino da realização dos procedimentos acima listados, faça a desconexão do MySQL, para isto basta executar no console do banco de dados o comando: `\\q`. \n\n## Executando Testes\nPara executarmos os testes apresentados no decorrer da série, em uma nova aba do console, digitarmos o seguinte comando:\n\n```\ndocker-compose exec web npm run test\n```\n\n\u003e Caso seja necessário executar os testes em modo `watch`, basta acrecentarmos ao comando anterior `-- --watch`.\n\n```\ndocker-compose exec web npm run test -- --watch\n```\n\n## Sugestão\nUtilize o Postman para testar suas chamadas. [https://www.getpostman.com/](https://www.getpostman.com/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs0uz4%2Frestful-nodejs-restify-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvs0uz4%2Frestful-nodejs-restify-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs0uz4%2Frestful-nodejs-restify-docker/lists"}