{"id":17274290,"url":"https://github.com/arifszn/vail","last_synced_at":"2025-04-14T08:31:42.714Z","repository":{"id":186316862,"uuid":"673907658","full_name":"arifszn/vail","owner":"arifszn","description":"⛵️Docker powered local development experience for JavaScript/TypeScript Apps. 🐳","archived":false,"fork":false,"pushed_at":"2024-08-01T19:06:02.000Z","size":217,"stargazers_count":11,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T22:04:35.686Z","etag":null,"topics":["backend","containerization","docker","docker-compose","dockerize","laravel-sail","vail"],"latest_commit_sha":null,"homepage":"https://npm.im/vail","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arifszn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2023-08-02T17:40:01.000Z","updated_at":"2024-12-31T21:32:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"8022e750-f47d-4c27-a36e-49cbab6a18fc","html_url":"https://github.com/arifszn/vail","commit_stats":null,"previous_names":["arifszn/vail"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Fvail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Fvail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Fvail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Fvail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arifszn","download_url":"https://codeload.github.com/arifszn/vail/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248845621,"owners_count":21170825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["backend","containerization","docker","docker-compose","dockerize","laravel-sail","vail"],"created_at":"2024-10-15T08:53:34.247Z","updated_at":"2025-04-14T08:31:42.651Z","avatar_url":"https://github.com/arifszn.png","language":"JavaScript","funding_links":["https://www.buymeacoffee.com/arifszn"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/arifszn/vail/assets/45073703/25c6ad3a-5992-4afd-9232-5e394b53927c\" width=\"8%\"\u003e\n  \u003ch1 align=\"center\"\u003eVail\u003c/h1\u003e\n\n  \u003ch4 align=\"center\"\u003eDockerize Your JavaScript/TypeScript Apps Effortlessly.\u003c/h4\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.npmjs.com/package/vail\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/v/vail\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/vail\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/dt/vail\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/arifszn/vail/issues\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/issues/arifszn/vail\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/arifszn/vail/stargazers\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/stars/arifszn/vail\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/arifszn/vail/blob/main/CONTRIBUTING.md\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/arifszn/vail/blob/main/LICENSE\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/license/arifszn/vail\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/arifszn\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/sponsor-buy%20me%20a%20coffee-yellow?logo=buymeacoffee\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://twitter.com/intent/tweet?url=https://github.com/arifszn/vail\u0026hashtags=javascript,nodejs,opensource,js,webdev,developers\"\u003e\n      \u003cimg src=\"https://img.shields.io/twitter/url?style=social\u0026url=https%3A%2F%2Fgithub.com%2Farifszn%2Fvail\"/\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/arifszn/vail/assets/45073703/b6f3bae6-62a4-45cf-8c15-1995f461a923\" alt=\"Preview\" width=\"60%\"/\u003e\n  \u003cbr/\u003e\n  \u003cimg src=\"https://arifszn.netlify.app/assets/img/drop-shadow.png\" width=\"50%\" alt=\"Shadow\"/\u003e\n\u003c/p\u003e\n\n## Introduction\n\n**Vail** provides a Docker powered local development experience for JavaScript/TypeScript Apps that is compatible with macOS, Windows (WSL2), and Linux.\n\nOther than Docker, no software or libraries are required to be installed on your local computer before using Vail. Vail's simple CLI means you can start building your application with MySQL, Adminer, MinIO and other services without any previous Docker experience.\n\n#### Inspiration\n\nVail is inspired by [Laravel Sail](https://github.com/laravel/sail).\n\n## Installation \u0026 Setup\n\nYou can install Vail using either NPM or Yarn.\n\n### NPM\n\nTo install Vail via NPM, use the following command:\n\n```sh\nnpm install vail\n```\n\n### Yarn\n\nAlternatively, you can install via Yarn using this command:\n\n```sh\nyarn add vail\n```\n\n### Installing for Existing Applications (without having Nodejs locally)\n\nIf you are developing an application with a team, you may not be the one that initially creates the application. Therefore, none of the application's node_module dependencies, including Vail, will be installed after you clone the application's repository to your local computer.\n\nYou may install the application's node_module dependencies by navigating to the application's directory and executing the following command. This command uses a small Docker container containing Nodejs to install the application's dependencies, including Vail:\n\n```sh\ndocker run --rm \\\n    -u \"$(id -u):$(id -g)\" \\\n    -v \"$(pwd):/var/www/html\" \\\n    -w /var/www/html \\\n    node:20-slim \\\n    npm install vail\n```\n\nWhen using the `node:20-slim` image, you should use the same version of Nodejs that you plan to use for your application.\n\n### Setup\n\nAfter Vail has been installed, you may run the `vail init` command. This command will publish Vail's `docker-compose.yml` file to the root of your application:\n\n```sh\n./node_modules/.bin/vail init\n```\n\n### Starting Vail\n\nAfter setting up Vail, you can start it by running the following command:\n\n```sh\n./node_modules/.bin/vail up\n```\n\nThis command will start Vail and all the containers defined in your `docker-compose.yml` file.\n\n### Stopping Vail\n\nTo stop all of the containers, you may simply press Control + C to stop the container's execution. Or, if the containers are running in the background, you may use the `stop` command:\n\n```sh\n./node_modules/.bin/vail stop\n```\n\n### Customization\n\nSince Vail is just Docker, you are free to customize nearly everything about it. After the installation, you may wish to change the env values or change the command to start your server in the `docker-compose.yml` file. After doing so, rebuild your application's containers using the build command.\n\n```sh\n./node_modules/.bin/vail build --no-cache\n```\n\n### Executing Commands\n\nVail supports all Docker Compose commands. You can use them as you would normally do with Docker Compose.\n\nAdditionally, you can use Vail to run any command within the context of your application's containers. For example, to check the Node.js version installed in your app container, you can run:\n\n```sh\n./node_modules/.bin/vail exec app node --version\n```\n\n### Configuring A Shell Alias\n\nInstead of repeatedly typing `./node_modules/.bin/vail` to execute Vail commands, you may wish to configure a shell alias that allows you to execute Vail's commands more easily:\n\n```sh\nalias vail='[ -f vail ] \u0026\u0026 sh vail || sh node_modules/.bin/vail'\n```\n\nTo make sure this is always available, you may add this to your shell configuration file in your home directory, such as ~/.zshrc or ~/.bashrc, and then restart your shell.\n\nOnce the shell alias has been configured, you may execute Vail commands by simply typing vail.\n\n```sh\nvail up\n```\n\n## Available Services\n\nVail supports the following services:\n\n- [Multiple Node version](#multiple-node-version)\n- [MySQL](#mysql)\n- [Adminer](#adminer)\n- [Redis](#redis)\n- [MinIO](#minio)\n- [Mailpit](#mailpit)\n- [Meilisearch](#meilisearch)\n- [Memcached](#memcached)\n- [RabbitMQ](#rabbitmq)\n- [PostgreSQL](#postgresql)\n- [MariaDB](#mariadb)\n\n### Multiple Node version\n\nThis service allows you to run your application with different Node.js versions without the need of installing them on your local machine. This gives you the flexibility of testing your application with various Node.js versions.\n\n### MySQL\n\nMySQL is a popular open-source relational database management system. Vail provides a pre-configured MySQL server.\n\nThe default config:\n\n- **Host:** mysql\n- **Port:** 3306\n- **Username:** vail\n- **Password:** password\n\n### Adminer\n\nAdminer is a full-featured database management tool. It allows you to access and manage your databases, not only MySQL but also PostgreSQL and many other relational databases are supported.\n\nAdminer can be accessed at `http://localhost:8080` (default configuration).\n\n![Adminer](https://github.com/arifszn/vail/assets/45073703/3ab55913-6869-4dd1-a55f-ec1e87385aba)\n\n### Redis\n\nRedis is an open-source in-memory data structure project implementing a distributed, in-memory key-value database with optional durability.\n\nThe default config:\n\n- **Port:** 6379\n\n### MinIO\n\nMinIO delivers AWS S3 compatible high-performance object storage. It provides the ability to store large amounts of unstructured data. In Vail, a pre-configured MinIO server is included.\n\nMinIO can be used to mock AWS S3 bucket in the local development environment. This is particularly handy while developing features that interact with S3 but you don't want to incur unnecessary AWS costs. To setup MinIO to act as an AWS S3 bucket:\n\n1. Access the MinIO dashboard via `http://localhost:8900`.\n\n   ![MinIO dashboard](https://github.com/arifszn/vail/assets/45073703/49e33577-7674-4eff-b585-1c9b04a38706)\n\n2. Login using the MinIO root user and password provided in the Vail setup.\n\n   The default credentials:\n\n   - **Username:** vail\n   - **Password:** password\n\n3. Create a new bucket, which will act as your S3 bucket.\n4. For your application, use the MinIO host, bucket name, access key, and secret key in place of the AWS S3 details.\n\nFor a more comprehensive guide on setting up MinIO and using it to simulate S3, refer to this [article](https://dev.to/arifszn/minio-mock-s3-in-local-development-4ke6).\n\n### Mailpit\n\nMailpit is an email testing tool for developers. It acts as both an SMTP server, and provides a web interface to view all captured emails.\n\nYou can send your emails to Mailpit SMTP server at `localhost:1025` and view them at the Mailpit web UI at `http://localhost:8025`.\n\n![Mailpit](https://github.com/arifszn/vail/assets/45073703/9968631f-454e-4af2-9d22-a2f1cfbe640b)\n\n### Meilisearch\n\nMeilisearch is an open-source search engine. It's a perfect fit for apps needing to deliver user-friendly, relevant and fast search.\n\nThe default config:\n\n- **Port:** 7700\n\n### Memcached\n\nMemcached is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read.\n\nThe default config:\n\n- **Port:** 11211\n\n### RabbitMQ\n\nRabbitMQ is an open-source message-queueing software also known as a message broker or queue manager.\n\nThe default config:\n\n- **Port:** 5672\n\n### PostgreSQL\n\nPostgreSQL, also known as Postgres, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards compliance.\n\nThe default config:\n\n- **Host:** pgsql\n- **Port:** 3306\n- **Username:** vail\n- **Password:** password\n\n### MariaDB\n\nMariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, which provides similar features and interface.\n\nThe default config:\n\n- **Host:** mariadb\n- **Port:** 3306\n- **Username:** vail\n- **Password:** password\n\n## Support\n\n\u003cp\u003eYou can show your support by starring this project.\u003c/p\u003e\n\u003ca href=\"https://github.com/arifszn/vail/stargazers\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/arifszn/vail?style=social\" alt=\"Github Star\"\u003e\n\u003c/a\u003e\n\n## Contributing\n\nWe welcome any contributions, bug reports, and feature requests. Please see [contributing guide](https://github.com/arifszn/vail/blob/main/CONTRIBUTING.md) for more information.\n\n## License\n\n[MIT](https://github.com/arifszn/vail/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farifszn%2Fvail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farifszn%2Fvail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farifszn%2Fvail/lists"}