Compare commits
108 Commits
Author | SHA1 | Date | |
---|---|---|---|
13891a52dd | |||
a1bbe23800 | |||
2b5fdc00ee | |||
68ff573904 | |||
3a62814fdc | |||
da043ee0c4 | |||
5cd6ea41f9 | |||
d321be888c | |||
7230b11d3b | |||
7b9ec17d8d | |||
18b38db037 | |||
adfb468913 | |||
43f4211abb | |||
b1b8585518 | |||
d8fd1a5de0 | |||
585baf0668 | |||
f99eff3a99 | |||
ff4b913396 | |||
e861348475 | |||
b0831240b1 | |||
37dee56bb7 | |||
2b11fc2299 | |||
754ca4cd4f | |||
10e3dc16d2 | |||
e23c6dae90 | |||
96c1d7c59c | |||
c574943e16 | |||
3226206267 | |||
63543b890a | |||
b58f859eff | |||
170a1efeb1 | |||
50e3d1667f | |||
269732d8ea | |||
a11206d4ba | |||
cb78a6c3d6 | |||
662280c139 | |||
68dd2fd019 | |||
c193c5d03b | |||
4efb5b43c6 | |||
3d2eb81cd5 | |||
a8d7937889 | |||
98c9fdff24 | |||
f05512fd1d | |||
fc460f9497 | |||
1fd55d98e1 | |||
4f5746f2a7 | |||
3d90a806fa | |||
cf9abcd5b8 | |||
e1036185ae | |||
d1af24736b | |||
236665d7d3 | |||
c340d851d3 | |||
38545cfffd | |||
bf19ecffcb | |||
6fa6d02360 | |||
e588f261f8 | |||
5d5545ec9e | |||
d152050e29 | |||
a0da2c0ea0 | |||
2e86243d88 | |||
6b61c7d454 | |||
3881a5d66d | |||
69b223a370 | |||
894cb6ea27 | |||
b81e3e8f15 | |||
7d49f9b820 | |||
9dad1586af | |||
d60178f598 | |||
5d74e10b08 | |||
40422ab4b0 | |||
b35a23d89e | |||
3445b5b1b6 | |||
8315a3872d | |||
6abea8746c | |||
09c5ad273c | |||
99b8a45f3b | |||
4f416da26b | |||
53b73798d3 | |||
c6e9b1ed5d | |||
4973dd93be | |||
9096737aa7 | |||
3429681f2c | |||
d4c727bb2d | |||
1ae104167a | |||
8869b22a1d | |||
1650af04cd | |||
bdcc2adf3f | |||
570be592bb | |||
d94de05fd4 | |||
69c180d2e8 | |||
134911843a | |||
d31ccbd268 | |||
2bbe39cf4a | |||
4588685e97 | |||
4b2ddfad20 | |||
516b148dae | |||
0c53eadf34 | |||
2219177eac | |||
5c0933d19a | |||
8de9eca8ae | |||
d172180660 | |||
9f78b17fd1 | |||
f5e33fb396 | |||
246814874c | |||
1250668267 | |||
c88e690bb4 | |||
c1de398acc | |||
73f7c88122 |
@ -9,4 +9,4 @@ charset = utf-8
|
|||||||
|
|
||||||
[{Dockerfile,docker-compose.yml}]
|
[{Dockerfile,docker-compose.yml}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 4
|
indent_size = 2
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
.idea
|
.idea
|
||||||
/logs
|
/logs
|
||||||
/data
|
/data
|
||||||
.env
|
.env
|
||||||
|
/.project
|
@ -706,6 +706,23 @@ docker-compose up -d mariadb phpmyadmin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Use-Adminer"></a>
|
||||||
|
## Use Adminer
|
||||||
|
|
||||||
|
1 - Run the Adminer Container (`adminer`) with the `docker-compose up` command. Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d adminer
|
||||||
|
```
|
||||||
|
|
||||||
|
2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-pgAdmin"></a>
|
<a name="Use-pgAdmin"></a>
|
||||||
## Use PgAdmin
|
## Use PgAdmin
|
||||||
@ -1358,8 +1375,6 @@ git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs
|
|||||||
|
|
||||||
```txt
|
```txt
|
||||||
/Users:/Users
|
/Users:/Users
|
||||||
/Volumes:/Volumes
|
|
||||||
/private:/private
|
|
||||||
```
|
```
|
||||||
|
|
||||||
5) Create (or edit) the file `/etc/exports`, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the `d4m-nfs.sh` script before).
|
5) Create (or edit) the file `/etc/exports`, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the `d4m-nfs.sh` script before).
|
||||||
|
@ -43,7 +43,7 @@ git submodule add https://github.com/Laradock/laradock.git
|
|||||||
|
|
||||||
- If you are not using Git yet for your project, you can use `git clone` instead of `git submodule `.
|
- If you are not using Git yet for your project, you can use `git clone` instead of `git submodule `.
|
||||||
|
|
||||||
- Note 2: To keep track of your Laradock changes, between your projects and also keep Laradock updated. [Check this](#keep-tracking-Laradock)
|
- Note 2: To keep track of your Laradock changes, between your projects and also keep Laradock updated. [Check this](/documentation/#keep-track-of-your-laradock-changes)
|
||||||
|
|
||||||
|
|
||||||
Your folder structure should look like this:
|
Your folder structure should look like this:
|
||||||
@ -82,6 +82,7 @@ Your folder structure should look like this:
|
|||||||
*Or you can keep `default.conf` as it is, and create a separate config `my-site.conf` file for it.*
|
*Or you can keep `default.conf` as it is, and create a separate config `my-site.conf` file for it.*
|
||||||
|
|
||||||
**In case of Apache:** :P
|
**In case of Apache:** :P
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
|
||||||
@ -136,8 +137,8 @@ You can rename the config files, project folders and domains as you like, just m
|
|||||||
|
|
||||||
If you are using **Docker Toolbox** (VM), do one of the following:
|
If you are using **Docker Toolbox** (VM), do one of the following:
|
||||||
|
|
||||||
- Upgrade to Docker [Native](https://www.docker.com/products/docker) for Mac/Windows (Recommended). Check out [Upgrading Laradock](#upgrading-laradock)
|
- Upgrade to Docker [Native](https://www.docker.com/products/docker) for Mac/Windows (Recommended). Check out [Upgrading Laradock](/documentation/#upgrading-laradock)
|
||||||
- Use Laradock v3.* (Visit the `Laradock-ToolBox` [Branch](https://github.com/laradock/laradock/tree/Laradock-ToolBox)).
|
- Use Laradock v3.\*. Visit the [LaraDock-ToolBox](https://github.com/laradock/laradock/tree/LaraDock-ToolBox) branch. *(outdated)*
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@ -167,7 +168,7 @@ docker-compose up -d nginx mysql
|
|||||||
|
|
||||||
You can select your own combination of containers form the list below:
|
You can select your own combination of containers form the list below:
|
||||||
|
|
||||||
> `nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `rabbitmq`, `beanstalkd-console`, `workspace`, `phpmyadmin`, `aerospike`, `pgadmin`, `elasticsearch`, `rethinkdb`, `postgres-postgis`, `certbot`, `mailhog`, `minio` and more...!
|
> `nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `rabbitmq`, `beanstalkd-console`, `workspace`, `phpmyadmin`, `adminer`, `aerospike`, `pgadmin`, `elasticsearch`, `rethinkdb`, `postgres-postgis`, `certbot`, `mailhog`, `minio` and more...!
|
||||||
|
|
||||||
*(Please note that sometimes we forget to update the docs, so check the `docker-compose.yml` file to see an updated list of all available containers).*
|
*(Please note that sometimes we forget to update the docs, so check the `docker-compose.yml` file to see an updated list of all available containers).*
|
||||||
|
|
||||||
|
@ -169,6 +169,7 @@ What's better than a **Demo Video**:
|
|||||||
- RabbitMQ Console
|
- RabbitMQ Console
|
||||||
- **Tools:**
|
- **Tools:**
|
||||||
- PhpMyAdmin
|
- PhpMyAdmin
|
||||||
|
- Adminer
|
||||||
- PgAdmin
|
- PgAdmin
|
||||||
- ElasticSearch
|
- ElasticSearch
|
||||||
- Selenium
|
- Selenium
|
||||||
|
@ -18,7 +18,9 @@ Laradock is a Docker PHP development environment that facilitate running **PHP**
|
|||||||
- [Bo-Yi Wu](https://github.com/appleboy) (appleboy) [ [Twitter](https://twitter.com/appleboy) ]
|
- [Bo-Yi Wu](https://github.com/appleboy) (appleboy) [ [Twitter](https://twitter.com/appleboy) ]
|
||||||
- [Philippe Trépanier](https://github.com/philtrep) (philtrep)
|
- [Philippe Trépanier](https://github.com/philtrep) (philtrep)
|
||||||
- [Mike Erickson](https://github.com/mikeerickson) (mikeerickson)
|
- [Mike Erickson](https://github.com/mikeerickson) (mikeerickson)
|
||||||
- Join Us!
|
- [Dwi Fahni Denni](https://github.com/zeroc0d3) (zeroc0d3)
|
||||||
|
- [Thor Erik](https://github.com/thorerik) (thorerik)
|
||||||
|
- Contribute and join us!
|
||||||
|
|
||||||
**Amazing Contributors:**
|
**Amazing Contributors:**
|
||||||
|
|
||||||
|
@ -1,112 +1,118 @@
|
|||||||
#### Install Docker
|
#### Install Docker
|
||||||
```
|
|
||||||
Login Digital Ocean
|
- Visit [DigitalOcean](https://cloud.digitalocean.com/login) and login.
|
||||||
Add Droplet
|
- Click the `Create Droplet` button.
|
||||||
1 Click Install docker
|
- Open the `One-click apps` tab.
|
||||||
Choose Droplet
|
- Select Docker with your preferred version.
|
||||||
reset ROOT password
|
- Continue creating the droplet as you normally would.
|
||||||
check email
|
- If needed, check your e-mail for the droplet root password.
|
||||||
```
|
|
||||||
|
|
||||||
#### SSH to your Server
|
#### SSH to your Server
|
||||||
|
|
||||||
|
Find the IP address of the droplet in the DigitalOcean interface. Use it to connect to the server.
|
||||||
|
|
||||||
```
|
```
|
||||||
ssh root@ipaddress
|
ssh root@ipaddress
|
||||||
```
|
```
|
||||||
you will be prompt of that password.
|
|
||||||
type the password you receive in your email
|
|
||||||
|
|
||||||
then it will ask to you to change a new password
|
You may be prompted for a password. Type the one you found within your e-mailbox. It'll then ask you to change the password.
|
||||||
just change it to the custom root password you want
|
|
||||||
|
|
||||||
After SSH
|
You can now check if Docker is available:
|
||||||
you can check that docker command is working by typing
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~# docker
|
$root@server:~# docker
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Set Up Your Laravel Project
|
#### Set Up Your Laravel Project
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~# apt-get install git
|
$root@server:~# apt-get install git
|
||||||
$root@midascode:~# git clone https://github.com/laravel/laravel
|
$root@server:~# git clone https://github.com/laravel/laravel
|
||||||
$root@midascode:~# cd laravel
|
$root@server:~# cd laravel
|
||||||
$root@midascode:~/laravel/ git submodule add https://github.com/LaraDock/laradock.git
|
$root@server:~/laravel/ git submodule add https://github.com/LaraDock/laradock.git
|
||||||
$root@midascode:~/laravel/ cd laradock
|
$root@server:~/laravel/ cd laradock
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Install docker-compose command
|
#### Install docker-compose command
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock# curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
|
$root@server:~/laravel/laradock# curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
|
||||||
$root@midascode:~/chmod +x /usr/local/bin/docker-compose
|
$root@server:~/chmod +x /usr/local/bin/docker-compose
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Create Your LaraDock Containers
|
#### Create Your LaraDock Containers
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock# docker-compose up -d nginx mysql
|
$root@server:~/laravel/laradock# docker-compose up -d nginx mysql
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Note that more containers are available, find them in the [docs](http://laradock.io/introduction/#supported-software-containers) or the `docker-compose.yml` file.
|
||||||
|
|
||||||
#### Go to Your Workspace
|
#### Go to Your Workspace
|
||||||
|
|
||||||
```
|
```
|
||||||
docker-compose exec workspace bash
|
docker-compose exec workspace bash
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Install laravel Dependencies, Add .env , generate Key and give proper permission certain folder
|
#### Install and configure Laravel
|
||||||
|
|
||||||
|
Let's install Laravel's dependencies, add the `.env` file, generate the key and give proper permissions to the cache folder.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ root@0e77851d27d3:/var/www# composer install
|
$ root@workspace:/var/www# composer install
|
||||||
$ root@0e77851d27d3:/var/www# cp .env.example .env
|
$ root@workspace:/var/www# cp .env.example .env
|
||||||
$ root@0e77851d27d3:/var/www# php artisan key:generate
|
$ root@workspace:/var/www# php artisan key:generate
|
||||||
$ root@0e77851d27d3:/var/www# exit
|
$ root@workspace:/var/www# exit
|
||||||
$root@midascode:~/laravel/laradock# cd ..
|
$root@server:~/laravel/laradock# cd ..
|
||||||
$root@midascode:~/laravel# sudo chmod -R 777 storage bootstrap/cache
|
$root@server:~/laravel# sudo chmod -R 777 storage bootstrap/cache
|
||||||
```
|
```
|
||||||
|
|
||||||
you can then view your laravel site at your ipaddress
|
You can then view your Laravel site by visiting the IP address of your server in your browser. For example:
|
||||||
for example
|
|
||||||
```
|
```
|
||||||
192.168.1.1
|
http://192.168.1.1
|
||||||
```
|
```
|
||||||
|
|
||||||
You will see there Laravel Default Welcome Page
|
It should show you the Laravel default welcome page.
|
||||||
|
|
||||||
but if you need to view on your custom domain name
|
However, we want it to show up using your custom domain name, as well.
|
||||||
which you would.
|
|
||||||
|
|
||||||
#### Using Your Own Domain Name
|
#### Using Your Own Domain Name
|
||||||
login to your DNS provider
|
|
||||||
Godaddy, Namecheap what ever...
|
Login to your DNS provider, such as Godaddy, Namecheap.
|
||||||
And Point the Custom Domain Name Server to
|
|
||||||
|
Point the Custom Domain Name Server to:
|
||||||
|
|
||||||
```
|
```
|
||||||
ns1.digitalocean.com
|
ns1.digitalocean.com
|
||||||
ns2.digitalocean.com
|
ns2.digitalocean.com
|
||||||
ns3.digitalocean.com
|
ns3.digitalocean.com
|
||||||
```
|
```
|
||||||
In Your Digital Ocean Account go to
|
|
||||||
```
|
|
||||||
https://cloud.digitalocean.com/networking/domains
|
|
||||||
```
|
|
||||||
add your domain name and choose the server ip you provision earlier
|
|
||||||
|
|
||||||
#### Serve Site With NGINX (HTTP ONLY)
|
Within DigitalOcean, you'll need to change some settings, too.
|
||||||
Go back to command line
|
|
||||||
|
Visit: https://cloud.digitalocean.com/networking/domains
|
||||||
|
|
||||||
|
Add your domain name and choose the server IP you'd provision earlier.
|
||||||
|
|
||||||
|
#### Serving Site With NGINX (HTTP ONLY)
|
||||||
|
|
||||||
|
Go back to command line.
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock# cd nginx
|
$root@server:~/laravel/laradock# cd nginx
|
||||||
$root@midascode:~/laravel/laradock/nginx# vim laravel.conf
|
$root@server:~/laravel/laradock/nginx# vim laravel.conf
|
||||||
```
|
|
||||||
remove default_server
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Remove `default_server`
|
||||||
|
|
||||||
|
```
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
listen [::]:80 default_server ipv6only=on;
|
listen [::]:80 default_server ipv6only=on;
|
||||||
|
|
||||||
```
|
```
|
||||||
and add server_name (your custom domain)
|
|
||||||
|
And add `server_name` (your custom domain)
|
||||||
|
|
||||||
```
|
```
|
||||||
listen 80;
|
listen 80;
|
||||||
listen [::]:80 ipv6only=on;
|
listen [::]:80 ipv6only=on;
|
||||||
@ -114,27 +120,29 @@ remove default_server
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### Rebuild Your Nginx
|
#### Rebuild Your Nginx
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock/nginx# docker-compose down
|
$root@server:~/laravel/laradock/nginx# docker-compose down
|
||||||
$root@midascode:~/laravel/laradock/nginx# docker-compose build nginx
|
$root@server:~/laravel/laradock/nginx# docker-compose build nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Re Run Your Containers MYSQL and NGINX
|
#### Re Run Your Containers MYSQL and NGINX
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock/nginx# docker-compose up -d nginx mysql
|
$root@server:~/laravel/laradock/nginx# docker-compose up -d nginx mysql
|
||||||
```
|
```
|
||||||
|
|
||||||
###### View Your Site with HTTP ONLY (http://yourdomain.com)
|
**View Your Site with HTTP ONLY (http://yourdomain.com)**
|
||||||
|
|
||||||
#### Run Site on SSL with Let's Encrypt Certificate
|
#### Run Site on SSL with Let's Encrypt Certificate
|
||||||
|
|
||||||
###### Note: You need to Use Caddy here Instead of Nginx
|
**Note: You need to Use Caddy here Instead of Nginx**
|
||||||
|
|
||||||
###### To go Caddy Folders and Edit CaddyFile
|
To go Caddy Folders and Edit CaddyFile
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock# cd caddy
|
$root@server:~/laravel/laradock# cd caddy
|
||||||
$root@midascode:~/laravel/laradock/caddy# vim Caddyfile
|
$root@server:~/laravel/laradock/caddy# vim Caddyfile
|
||||||
```
|
```
|
||||||
|
|
||||||
Remove 0.0.0.0:80
|
Remove 0.0.0.0:80
|
||||||
@ -142,32 +150,37 @@ Remove 0.0.0.0:80
|
|||||||
```
|
```
|
||||||
0.0.0.0:80
|
0.0.0.0:80
|
||||||
root /var/www/public
|
root /var/www/public
|
||||||
```
|
```
|
||||||
|
|
||||||
and replace with your https://yourdomain.com
|
and replace with your https://yourdomain.com
|
||||||
|
|
||||||
```
|
```
|
||||||
https://yourdomain.com
|
https://yourdomain.com
|
||||||
root /var/www/public
|
root /var/www/public
|
||||||
```
|
```
|
||||||
|
|
||||||
uncomment tls
|
uncomment tls
|
||||||
|
|
||||||
```
|
```
|
||||||
#tls self-signed
|
#tls self-signed
|
||||||
```
|
```
|
||||||
|
|
||||||
and replace self-signed with your email address
|
and replace self-signed with your email address
|
||||||
|
|
||||||
```
|
```
|
||||||
tls midascodebreaker@gmai.com
|
tls serverbreaker@gmai.com
|
||||||
```
|
```
|
||||||
|
|
||||||
This is needed Prior to Creating Let's Encypt
|
This is needed Prior to Creating Let's Encypt
|
||||||
|
|
||||||
#### Run Your Caddy Container without the -d flag and Generate SSL with Let's Encrypt
|
#### Run Your Caddy Container without the -d flag and Generate SSL with Let's Encrypt
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock/caddy# docker-compose up caddy
|
$root@server:~/laravel/laradock/caddy# docker-compose up caddy
|
||||||
```
|
```
|
||||||
|
|
||||||
you will be prompt here to enter your email... you may enter it or not
|
You'll be prompt here to enter your email... you may enter it or not
|
||||||
|
|
||||||
```
|
```
|
||||||
Attaching to laradock_mysql_1, laradock_caddy_1
|
Attaching to laradock_mysql_1, laradock_caddy_1
|
||||||
caddy_1 | Activating privacy features...
|
caddy_1 | Activating privacy features...
|
||||||
@ -179,17 +192,18 @@ caddy_1 | https://yourdomain.com
|
|||||||
caddy_1 | http://yourdomain.com
|
caddy_1 | http://yourdomain.com
|
||||||
```
|
```
|
||||||
|
|
||||||
After it finish Press Ctrl + C to exit ...
|
After it finishes, press `Ctrl` + `C` to exit.
|
||||||
|
|
||||||
#### Stop All Containers and ReRun Caddy and Other Containers on Background
|
#### Stop All Containers and ReRun Caddy and Other Containers on Background
|
||||||
|
|
||||||
```
|
```
|
||||||
$root@midascode:~/laravel/laradock/caddy# docker-compose down
|
$root@server:~/laravel/laradock/caddy# docker-compose down
|
||||||
$root@midascode:~/laravel/laradock/caddy# docker-compose up -d mysql caddy
|
$root@server:~/laravel/laradock/caddy# docker-compose up -d mysql caddy
|
||||||
```
|
```
|
||||||
|
|
||||||
View your Site in the Browser Securely Using HTTPS (https://yourdomain.com)
|
View your Site in the Browser Securely Using HTTPS (https://yourdomain.com)
|
||||||
|
|
||||||
##### Note that Certificate will be Automatically Renew By Caddy
|
**Note that Certificate will be Automatically Renew By Caddy**
|
||||||
|
|
||||||
>References:
|
>References:
|
||||||
>
|
>
|
||||||
@ -200,14 +214,3 @@ View your Site in the Browser Securely Using HTTPS (https://yourdomain.com)
|
|||||||
- [https://caddyserver.com/docs/automatic-https](https://caddyserver.com/docs/automatic-https)
|
- [https://caddyserver.com/docs/automatic-https](https://caddyserver.com/docs/automatic-https)
|
||||||
- [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/tls)
|
- [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/tls)
|
||||||
- [https://caddyserver.com/docs/caddyfile](https://caddyserver.com/docs/caddyfile)
|
- [https://caddyserver.com/docs/caddyfile](https://caddyserver.com/docs/caddyfile)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
9
adminer/Dockerfile
Normal file
9
adminer/Dockerfile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
FROM adminer:latest
|
||||||
|
|
||||||
|
MAINTAINER Patrick Artounian <partounian@gmail.com>
|
||||||
|
|
||||||
|
# Add volume for sessions to allow session persistence
|
||||||
|
VOLUME /sessions
|
||||||
|
|
||||||
|
# We expose Adminer on port 8080 (Adminer's default)
|
||||||
|
EXPOSE 8080
|
@ -1,5 +1,7 @@
|
|||||||
FROM phusion/baseimage:latest
|
FROM phusion/baseimage:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
COPY run-certbot.sh /root/certbot/run-certbot.sh
|
COPY run-certbot.sh /root/certbot/run-certbot.sh
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
|
@ -5,408 +5,555 @@ services:
|
|||||||
### Applications Code Container #############################
|
### Applications Code Container #############################
|
||||||
|
|
||||||
applications:
|
applications:
|
||||||
image: tianon/true
|
image: tianon/true
|
||||||
volumes:
|
volumes:
|
||||||
- ${APPLICATION}:/var/www
|
- ${APPLICATION}:/var/www
|
||||||
|
|
||||||
### Workspace Utilities Container ###########################
|
### Workspace Utilities Container ###########################
|
||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
build:
|
build:
|
||||||
context: ./workspace
|
context: ./workspace
|
||||||
args:
|
args:
|
||||||
- INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
|
- INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
|
||||||
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
|
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
|
||||||
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
|
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
|
||||||
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
|
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
|
||||||
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
|
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
|
||||||
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
|
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
|
||||||
- INSTALL_AEROSPIKE_EXTENSION=${WORKSPACE_INSTALL_AEROSPIKE_EXTENSION}
|
- INSTALL_AEROSPIKE_EXTENSION=${WORKSPACE_INSTALL_AEROSPIKE_EXTENSION}
|
||||||
- INSTALL_V8JS_EXTENSION=${WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION}
|
- INSTALL_V8JS_EXTENSION=${WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION}
|
||||||
- COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
|
- COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
|
||||||
- INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
|
- INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
|
||||||
- INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
- INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
||||||
- INSTALL_DEPLOYER=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
- INSTALL_DEPLOYER=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
||||||
- INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
- INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
|
||||||
- INSTALL_MC=${WORKSPACE_INSTALL_MC}
|
- INSTALL_MC=${WORKSPACE_INSTALL_MC}
|
||||||
- PUID=${WORKSPACE_PUID}
|
- INSTALL_SYMFONY=${WORKSPACE_INSTALL_SYMFONY}
|
||||||
- PGID=${WORKSPACE_PGID}
|
- PUID=${WORKSPACE_PUID}
|
||||||
- NODE_VERSION=${WORKSPACE_NODE_VERSION}
|
- PGID=${WORKSPACE_PGID}
|
||||||
- YARN_VERSION=${WORKSPACE_TIMEZONE}
|
- NODE_VERSION=${WORKSPACE_NODE_VERSION}
|
||||||
- TZ=${WORKSPACE_TIMEZONE}
|
- YARN_VERSION=${WORKSPACE_YARN_VERSION}
|
||||||
volumes_from:
|
- TZ=${WORKSPACE_TIMEZONE}
|
||||||
- applications
|
dockerfile: "Dockerfile-${PHP_VERSION}"
|
||||||
extra_hosts:
|
volumes_from:
|
||||||
- "dockerhost:${DOCKER_HOST_IP}"
|
- applications
|
||||||
ports:
|
extra_hosts:
|
||||||
- "${WORKSPACE_SSH_PORT}:22"
|
- "dockerhost:${DOCKER_HOST_IP}"
|
||||||
tty: true
|
ports:
|
||||||
|
- "${WORKSPACE_SSH_PORT}:22"
|
||||||
|
tty: true
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- backend
|
||||||
|
|
||||||
### PHP-FPM Container #######################################
|
### PHP-FPM Container #######################################
|
||||||
|
|
||||||
php-fpm:
|
php-fpm:
|
||||||
build:
|
build:
|
||||||
context: ./php-fpm
|
context: ./php-fpm
|
||||||
args:
|
args:
|
||||||
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
|
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
|
||||||
- INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
|
- INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
|
||||||
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
|
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
|
||||||
- INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
|
- INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
|
||||||
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
|
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
|
||||||
- INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
|
- INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
|
||||||
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
|
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
|
||||||
- INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
|
- INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
|
||||||
- INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
|
- INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
|
||||||
- INSTALL_AEROSPIKE_EXTENSION=${PHP_FPM_INSTALL_AEROSPIKE_EXTENSION}
|
- INSTALL_AEROSPIKE_EXTENSION=${PHP_FPM_INSTALL_AEROSPIKE_EXTENSION}
|
||||||
- INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
|
- INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
|
||||||
- INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
|
- INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
|
||||||
- INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
|
- INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
|
||||||
dockerfile: ${PHP_FPM_DOCKER_FILE}
|
dockerfile: "Dockerfile-${PHP_VERSION}"
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
expose:
|
expose:
|
||||||
- "9000"
|
- "9000"
|
||||||
depends_on:
|
depends_on:
|
||||||
- workspace
|
- workspace
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "dockerhost:${DOCKER_HOST_IP}"
|
- "dockerhost:${DOCKER_HOST_IP}"
|
||||||
environment:
|
environment:
|
||||||
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
|
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### PHP Worker Container #####################################
|
### PHP Worker Container #####################################
|
||||||
php-worker:
|
php-worker:
|
||||||
build:
|
build:
|
||||||
context: ./php-worker
|
context: ./php-worker
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
depends_on:
|
depends_on:
|
||||||
- workspace
|
- workspace
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Nginx Server Container ##################################
|
### Nginx Server Container ##################################
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build:
|
build:
|
||||||
context: ./nginx
|
context: ./nginx
|
||||||
args:
|
args:
|
||||||
- PHP_UPSTREAM=php-fpm
|
- PHP_UPSTREAM=php-fpm
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
volumes:
|
volumes:
|
||||||
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
|
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
|
||||||
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
|
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
|
||||||
ports:
|
ports:
|
||||||
- "${NGINX_HOST_HTTP_PORT}:80"
|
- "${NGINX_HOST_HTTP_PORT}:80"
|
||||||
- "${NGINX_HOST_HTTPS_PORT}:443"
|
- "${NGINX_HOST_HTTPS_PORT}:443"
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- backend
|
||||||
|
|
||||||
### Apache Server Container #################################
|
### Apache Server Container #################################
|
||||||
|
|
||||||
apache2:
|
apache2:
|
||||||
build:
|
build:
|
||||||
context: ./apache2
|
context: ./apache2
|
||||||
args:
|
args:
|
||||||
- PHP_SOCKET=${PHP_SOCKET}
|
- PHP_SOCKET=${PHP_SOCKET}
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
volumes:
|
volumes:
|
||||||
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
|
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
|
||||||
- ./apache2/sites:/etc/apache2/sites-available
|
- ./apache2/sites:/etc/apache2/sites-available
|
||||||
|
ports:
|
||||||
|
- "${APACHE_HOST_HTTP_PORT}:80"
|
||||||
ports:
|
- "${APACHE_HOST_HTTPS_PORT}:443"
|
||||||
- "${APACHE_HOST_HTTP_PORT}:80"
|
depends_on:
|
||||||
- "${APACHE_HOST_HTTPS_PORT}:443"
|
- php-fpm
|
||||||
depends_on:
|
networks:
|
||||||
- php-fpm
|
- frontend
|
||||||
|
- backend
|
||||||
|
|
||||||
### HHVM Container ##########################################
|
### HHVM Container ##########################################
|
||||||
|
|
||||||
hhvm:
|
hhvm:
|
||||||
build: ./hhvm
|
build: ./hhvm
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
expose:
|
expose:
|
||||||
- "9000"
|
- "9000"
|
||||||
depends_on:
|
depends_on:
|
||||||
- workspace
|
- workspace
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- backend
|
||||||
|
|
||||||
### Minio Container #########################################
|
### Minio Container #########################################
|
||||||
|
|
||||||
minio:
|
minio:
|
||||||
build: ./minio
|
build: ./minio
|
||||||
volumes:
|
volumes:
|
||||||
- minio:/export
|
- minio:/export
|
||||||
ports:
|
ports:
|
||||||
- "${MINIO_PORT}:9000"
|
- "${MINIO_PORT}:9000"
|
||||||
environment:
|
environment:
|
||||||
MINIO_ACCESS_KEY: access
|
- MINIO_ACCESS_KEY=access
|
||||||
MINIO_SECRET_KEY: secretkey
|
- MINIO_SECRET_KEY=secretkey
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### MySQL Container #########################################
|
### MySQL Container #########################################
|
||||||
|
|
||||||
mysql:
|
mysql:
|
||||||
build:
|
build:
|
||||||
context: ./mysql
|
context: ./mysql
|
||||||
args:
|
args:
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
- MYSQL_USER=${MYSQL_USER}
|
- MYSQL_USER=${MYSQL_USER}
|
||||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- mysql:/var/lib/mysql
|
- mysql:/var/lib/mysql
|
||||||
ports:
|
ports:
|
||||||
- "${MYSQL_PORT}:3306"
|
- "${MYSQL_PORT}:3306"
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
|
### MSSQL Container #########################################
|
||||||
|
|
||||||
|
mssql:
|
||||||
|
build:
|
||||||
|
context: ./mssql
|
||||||
|
environment:
|
||||||
|
- MSSQL_DATABASE=${MSSQL_DATABASE}
|
||||||
|
- SA_PASSWORD=${MSSQL_PASSWORD}
|
||||||
|
- ACCEPT_EULA=Y
|
||||||
|
volumes:
|
||||||
|
- mssql:/var/opt/mssql
|
||||||
|
ports:
|
||||||
|
- "${MSSQL_PORT}:1433"
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### MariaDB Container #######################################
|
### MariaDB Container #######################################
|
||||||
|
|
||||||
mariadb:
|
mariadb:
|
||||||
build: ./mariadb
|
build: ./mariadb
|
||||||
volumes:
|
volumes:
|
||||||
- mariadb:/var/lib/mysql
|
- mariadb:/var/lib/mysql
|
||||||
ports:
|
ports:
|
||||||
- "${MARIADB_PORT}:3306"
|
- "${MARIADB_PORT}:3306"
|
||||||
environment:
|
environment:
|
||||||
MYSQL_DATABASE: ${MARIADB_DATABASE}
|
- MYSQL_DATABASE=${MARIADB_DATABASE}
|
||||||
MYSQL_USER: ${MARIADB_USER}
|
- MYSQL_USER=${MARIADB_USER}
|
||||||
MYSQL_PASSWORD: ${MARIADB_PASSWORD}
|
- MYSQL_PASSWORD=${MARIADB_PASSWORD}
|
||||||
MYSQL_ROOT_PASSWORD: ${MARIADB_PORT}
|
- MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### PostgreSQL Container ####################################
|
### PostgreSQL Container ####################################
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
build: ./postgres
|
build: ./postgres
|
||||||
volumes:
|
volumes:
|
||||||
- postgres:/var/lib/postgresql/data
|
- postgres:/var/lib/postgresql/data
|
||||||
ports:
|
ports:
|
||||||
- "${POSTGRES_PORT}:5432"
|
- "${POSTGRES_PORT}:5432"
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: ${POSTGRES_DB}
|
- POSTGRES_DB=${POSTGRES_DB}
|
||||||
POSTGRES_USER: ${POSTGRES_USER}
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### PostgreSQL PostGis Container ############################
|
### PostgreSQL PostGis Container ############################
|
||||||
|
|
||||||
postgres-postgis:
|
postgres-postgis:
|
||||||
build: ./postgres-postgis
|
build: ./postgres-postgis
|
||||||
volumes:
|
volumes:
|
||||||
- postgres:/var/lib/postgresql/data
|
- postgres:/var/lib/postgresql/data
|
||||||
ports:
|
ports:
|
||||||
- "${POSTGRES_PORT}:5432"
|
- "${POSTGRES_PORT}:5432"
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: ${POSTGRES_DB}
|
- POSTGRES_DB=${POSTGRES_DB}
|
||||||
POSTGRES_USER: ${POSTGRES_USER}
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Neo4j Container #########################################
|
### Neo4j Container #########################################
|
||||||
|
|
||||||
neo4j:
|
neo4j:
|
||||||
build: ./neo4j
|
build: ./neo4j
|
||||||
ports:
|
ports:
|
||||||
- "7474:7474"
|
- "7474:7474"
|
||||||
- "1337:1337"
|
- "1337:1337"
|
||||||
environment:
|
environment:
|
||||||
- NEO4J_AUTH=default:secret
|
- NEO4J_AUTH=default:secret
|
||||||
volumes:
|
volumes:
|
||||||
- neo4j:/var/lib/neo4j/data
|
- neo4j:/var/lib/neo4j/data
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### MongoDB Container #######################################
|
### MongoDB Container #######################################
|
||||||
|
|
||||||
mongo:
|
mongo:
|
||||||
build: ./mongo
|
build: ./mongo
|
||||||
ports:
|
ports:
|
||||||
- "27017:27017"
|
- "27017:27017"
|
||||||
volumes:
|
volumes:
|
||||||
- mongo:/data/db
|
- mongo:/data/db
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### RethinkDB Container #######################################
|
### RethinkDB Container #######################################
|
||||||
|
|
||||||
rethinkdb:
|
rethinkdb:
|
||||||
build: ./rethinkdb
|
build: ./rethinkdb
|
||||||
ports:
|
ports:
|
||||||
- "8090:8080"
|
- "8090:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- rethinkdb:/data/rethinkdb_data
|
- rethinkdb:/data/rethinkdb_data
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Redis Container #########################################
|
### Redis Container #########################################
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
build: ./redis
|
build: ./redis
|
||||||
volumes:
|
volumes:
|
||||||
- redis:/data
|
- redis:/data
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "6379:6379"
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Aerospike c Container ###################################
|
### Aerospike c Container ###################################
|
||||||
|
|
||||||
aerospike:
|
aerospike:
|
||||||
build: ./aerospike
|
build: ./aerospike
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- workspace
|
- workspace
|
||||||
volumes:
|
volumes:
|
||||||
- aerospike:/opt/aerospike/data
|
- aerospike:/opt/aerospike/data
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
- "3001:3001"
|
- "3001:3001"
|
||||||
- "3002:3002"
|
- "3002:3002"
|
||||||
- "3003:3003"
|
- "3003:3003"
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Memcached Container #####################################
|
### Memcached Container #####################################
|
||||||
|
|
||||||
memcached:
|
memcached:
|
||||||
build: ./memcached
|
build: ./memcached
|
||||||
volumes:
|
volumes:
|
||||||
- memcached:/var/lib/memcached
|
- memcached:/var/lib/memcached
|
||||||
ports:
|
ports:
|
||||||
- "${MEMCACHED_HOST_PORT}:11211"
|
- "${MEMCACHED_HOST_PORT}:11211"
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Beanstalkd Container ####################################
|
### Beanstalkd Container ####################################
|
||||||
|
|
||||||
beanstalkd:
|
beanstalkd:
|
||||||
build: ./beanstalkd
|
build: ./beanstalkd
|
||||||
ports:
|
ports:
|
||||||
- "${BEANSTALKD_HOST_PORT}:11300"
|
- "${BEANSTALKD_HOST_PORT}:11300"
|
||||||
privileged: true
|
privileged: true
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### RabbitMQ Container ######################################
|
### RabbitMQ Container ######################################
|
||||||
|
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
build: ./rabbitmq
|
build: ./rabbitmq
|
||||||
ports:
|
ports:
|
||||||
- "${RABBITMQ_NODE_HOST_PORT}:5672"
|
- "${RABBITMQ_NODE_HOST_PORT}:5672"
|
||||||
- "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
|
- "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
|
||||||
- "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
|
- "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
|
||||||
privileged: true
|
privileged: true
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
|
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
|
||||||
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
|
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Beanstalkd Console Container ############################
|
### Beanstalkd Console Container ############################
|
||||||
|
|
||||||
beanstalkd-console:
|
beanstalkd-console:
|
||||||
build: ./beanstalkd-console
|
build: ./beanstalkd-console
|
||||||
ports:
|
ports:
|
||||||
- "2080:2080"
|
- "2080:2080"
|
||||||
depends_on:
|
depends_on:
|
||||||
- beanstalkd
|
- beanstalkd
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
|
||||||
### Caddy Server Container ##################################
|
### Caddy Server Container ##################################
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
build: ./caddy
|
build: ./caddy
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
- "2015:2015"
|
- "2015:2015"
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- applications
|
- applications
|
||||||
volumes:
|
volumes:
|
||||||
- ./caddy/Caddyfile:/etc/Caddyfile
|
- ./caddy/Caddyfile:/etc/Caddyfile
|
||||||
- ./logs/caddy:/var/log/caddy
|
- ./logs/caddy:/var/log/caddy
|
||||||
- caddy:/root/.caddy
|
- caddy:/root/.caddy
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- backend
|
||||||
|
|
||||||
### phpMyAdmin Container ####################################
|
### phpMyAdmin Container ####################################
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
build: ./phpmyadmin
|
build: ./phpmyadmin
|
||||||
environment:
|
environment:
|
||||||
PMA_ARBITRARY: 1
|
- PMA_ARBITRARY=1
|
||||||
MYSQL_USER: ${PMA_USER}
|
- MYSQL_USER=${PMA_USER}
|
||||||
MYSQL_PASSWORD: ${PMA_PASSWORD}
|
- MYSQL_PASSWORD=${PMA_PASSWORD}
|
||||||
MYSQL_ROOT_PASSWORD: ${PMA_ROOT_PASSWORD}
|
- MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
|
||||||
ports:
|
ports:
|
||||||
- "${PMA_PORT}:80"
|
- "${PMA_PORT}:80"
|
||||||
depends_on:
|
depends_on:
|
||||||
- "${PMA_DB_ENGINE}"
|
- "${PMA_DB_ENGINE}"
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
|
### Adminer Container ####################################
|
||||||
|
|
||||||
|
adminer:
|
||||||
|
build: ./adminer
|
||||||
|
ports:
|
||||||
|
- "${ADM_PORT}:8080"
|
||||||
|
depends_on:
|
||||||
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### pgAdmin Container #######################################
|
### pgAdmin Container #######################################
|
||||||
|
|
||||||
pgadmin:
|
pgadmin:
|
||||||
build: ./pgadmin
|
build: ./pgadmin
|
||||||
ports:
|
ports:
|
||||||
- "5050:5050"
|
- "5050:5050"
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### ElasticSearch Container #################################
|
### ElasticSearch Container #################################
|
||||||
|
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
build: ./elasticsearch
|
build: ./elasticsearch
|
||||||
volumes:
|
volumes:
|
||||||
- elasticsearch-data:/usr/share/elasticsearch/data
|
- elasticsearch-data:/usr/share/elasticsearch/data
|
||||||
- elasticsearch-plugins:/usr/share/elasticsearch/plugins
|
- elasticsearch-plugins:/usr/share/elasticsearch/plugins
|
||||||
ports:
|
ports:
|
||||||
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
|
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
|
||||||
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
|
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
|
||||||
depends_on:
|
depends_on:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### Certbot Container ##################################
|
### Certbot Container ##################################
|
||||||
|
|
||||||
certbot:
|
certbot:
|
||||||
build:
|
build:
|
||||||
context: ./certbot
|
context: ./certbot
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/certbot/certs/:/var/certs
|
- ./data/certbot/certs/:/var/certs
|
||||||
- ./certbot/letsencrypt/:/var/www/letsencrypt
|
- ./certbot/letsencrypt/:/var/www/letsencrypt
|
||||||
environment:
|
environment:
|
||||||
CN: "fake.domain.com"
|
- CN="fake.domain.com"
|
||||||
EMAIL: "fake.email@gmail.com"
|
- EMAIL="fake.email@gmail.com"
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### Mailhog Container #########################################
|
### Mailhog Container #########################################
|
||||||
|
|
||||||
mailhog:
|
mailhog:
|
||||||
build: ./mailhog
|
build: ./mailhog
|
||||||
ports:
|
ports:
|
||||||
- "1025:1025"
|
- "1025:1025"
|
||||||
- "8025:8025"
|
- "8025:8025"
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### Selenium Container #########################################
|
### Selenium Container ########################################
|
||||||
|
|
||||||
selenium:
|
selenium:
|
||||||
build: ./selenium
|
build: ./selenium
|
||||||
ports:
|
ports:
|
||||||
- "${SELENIUM_PORT}:4444"
|
- "${SELENIUM_PORT}:4444"
|
||||||
volumes:
|
volumes:
|
||||||
- /dev/shm:/dev/shm
|
- /dev/shm:/dev/shm
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
### Volumes Setup ###########################################
|
### Varnish Proxy 1 ##########################################
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
build: ./varnish
|
||||||
|
expose:
|
||||||
|
- ${VARNISH_PORT}
|
||||||
|
environment:
|
||||||
|
- VARNISH_CONFIG=${VARNISH_CONFIG}
|
||||||
|
- CACHE_SIZE=${VARNISH_PROXY1_CACHE_SIZE}
|
||||||
|
- VARNISHD_PARAMS=${VARNISHD_PARAMS}
|
||||||
|
- VARNISH_PORT=${VARNISH_PORT}
|
||||||
|
- BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
|
||||||
|
- BACKEND_PORT=${VARNISH_BACKEND_PORT}
|
||||||
|
- VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
|
||||||
|
links:
|
||||||
|
- workspace
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
|
### Varnish Proxy 2 ##########################################
|
||||||
|
|
||||||
|
proxy2:
|
||||||
|
build: ./varnish
|
||||||
|
expose:
|
||||||
|
- ${VARNISH_PORT}
|
||||||
|
environment:
|
||||||
|
- VARNISH_CONFIG=${VARNISH_CONFIG}
|
||||||
|
- CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
|
||||||
|
- VARNISHD_PARAMS=${VARNISHD_PARAMS}
|
||||||
|
- VARNISH_PORT=${VARNISH_PORT}
|
||||||
|
- BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
|
||||||
|
- BACKEND_PORT=${VARNISH_BACKEND_PORT}
|
||||||
|
- VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
|
||||||
|
links:
|
||||||
|
- workspace
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
|
||||||
|
### Balancer Haproxy ##########################################
|
||||||
|
|
||||||
|
balancer:
|
||||||
|
build: ./haproxy
|
||||||
|
ports:
|
||||||
|
- "${HAPROXY_HOST_HTTP_PORT}:8085"
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
links:
|
||||||
|
- proxy
|
||||||
|
- proxy2
|
||||||
|
|
||||||
|
### Networks Setup ############################################
|
||||||
|
|
||||||
|
networks:
|
||||||
|
frontend:
|
||||||
|
driver: "bridge"
|
||||||
|
backend:
|
||||||
|
driver: "bridge"
|
||||||
|
|
||||||
|
### Volumes Setup #############################################
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mysql:
|
mysql:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
postgres:
|
mssql:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
memcached:
|
postgres:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
redis:
|
memcached:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
neo4j:
|
redis:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
mariadb:
|
neo4j:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
mongo:
|
mariadb:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
minio:
|
mongo:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
rethinkdb:
|
minio:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
phpmyadmin:
|
rethinkdb:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
aerospike:
|
phpmyadmin:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
caddy:
|
adminer:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
elasticsearch-data:
|
aerospike:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
elasticsearch-plugins:
|
caddy:
|
||||||
driver: "local"
|
driver: "local"
|
||||||
|
elasticsearch-data:
|
||||||
|
driver: "local"
|
||||||
|
elasticsearch-plugins:
|
||||||
|
driver: "local"
|
||||||
|
@ -1423,8 +1423,6 @@ e) set it to <code>true</code></p>
|
|||||||
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
||||||
|
|
||||||
<pre><code class="language-txt">/Users:/Users
|
<pre><code class="language-txt">/Users:/Users
|
||||||
/Volumes:/Volumes
|
|
||||||
/private:/private
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
||||||
|
@ -1126,8 +1126,6 @@ e) set it to <code>true</code></p>
|
|||||||
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
||||||
|
|
||||||
<pre><code class="language-txt">/Users:/Users
|
<pre><code class="language-txt">/Users:/Users
|
||||||
/Volumes:/Volumes
|
|
||||||
/private:/private
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
||||||
|
@ -217,6 +217,7 @@
|
|||||||
|
|
||||||
<p><br>
|
<p><br>
|
||||||
5 - Open your browser and visit your localhost address <code>http://localhost/</code>. If you followed the multiple projects setup, you can visit <code>http://project-1.dev/</code> and <code>http://project-2.dev/</code>. But first don&rsquo;t</p>
|
5 - Open your browser and visit your localhost address <code>http://localhost/</code>. If you followed the multiple projects setup, you can visit <code>http://project-1.dev/</code> and <code>http://project-2.dev/</code>. But first don&rsquo;t</p>
|
||||||
|
|
||||||
</description>
|
</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
|
@ -1828,8 +1828,6 @@ e) set it to <code>true</code></p>
|
|||||||
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
||||||
|
|
||||||
<pre><code class="language-txt">/Users:/Users
|
<pre><code class="language-txt">/Users:/Users
|
||||||
/Volumes:/Volumes
|
|
||||||
/private:/private
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
||||||
@ -1949,7 +1947,6 @@ These Docker Compose projects have piqued our interest:</li>
|
|||||||
<h2 id="i-have-a-question-problem">I have a Question/Problem</h2>
|
<h2 id="i-have-a-question-problem">I have a Question/Problem</h2>
|
||||||
|
|
||||||
<p>If you have questions about how to use Laradock, please direct your questions to the discussion on <a href="https://gitter.im/Laradock/laradock">Gitter</a>. If you believe your question could help others, then consider opening an <a href="https://github.com/laradock/laradock/issues">Issue</a> (it will be labeled as <code>Question</code>) And you can still seek help on Gitter for it.</p>
|
<p>If you have questions about how to use Laradock, please direct your questions to the discussion on <a href="https://gitter.im/Laradock/laradock">Gitter</a>. If you believe your question could help others, then consider opening an <a href="https://github.com/laradock/laradock/issues">Issue</a> (it will be labeled as <code>Question</code>) And you can still seek help on Gitter for it.</p>
|
||||||
|
|
||||||
<h2 id="i-found-an-issue">I found an Issue</h2>
|
<h2 id="i-found-an-issue">I found an Issue</h2>
|
||||||
|
|
||||||
<p>If have an issue or you found a typo in the documentation, you can help us by
|
<p>If have an issue or you found a typo in the documentation, you can help us by
|
||||||
|
@ -1540,8 +1540,6 @@ e) set it to <code>true</code></p>
|
|||||||
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
<p>4) Create (or edit) the file <code>~/d4m-nfs/etc/d4m-nfs-mounts.txt</code>, and write the follwing configuration in it:</p>
|
||||||
|
|
||||||
<pre><code class="language-txt">/Users:/Users
|
<pre><code class="language-txt">/Users:/Users
|
||||||
/Volumes:/Volumes
|
|
||||||
/private:/private
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
<p>5) Create (or edit) the file <code>/etc/exports</code>, make sure it exists and is empty. (There may be collisions if you come from Vagrant or if you already executed the <code>d4m-nfs.sh</code> script before).</p>
|
||||||
@ -1713,7 +1711,6 @@ features, by not reporting duplicate issues.</em></p>
|
|||||||
<h3 id="to-host-the-website-locally">To Host the website locally</h3>
|
<h3 id="to-host-the-website-locally">To Host the website locally</h3>
|
||||||
|
|
||||||
<p>Go to <code>DOCUMENTATION/_settings</code> in your terminal and run <code>hugo serve</code> to host the website locally.</p>
|
<p>Go to <code>DOCUMENTATION/_settings</code> in your terminal and run <code>hugo serve</code> to host the website locally.</p>
|
||||||
|
|
||||||
<h3 id="edit-the-sidebar">Edit the sidebar</h3>
|
<h3 id="edit-the-sidebar">Edit the sidebar</h3>
|
||||||
|
|
||||||
<p>To add a new section to the sidebar or edit existing one, you need to edit this file <code>DOCUMENTATION/_settings/config.toml</code>.</p>
|
<p>To add a new section to the sidebar or edit existing one, you need to edit this file <code>DOCUMENTATION/_settings/config.toml</code>.</p>
|
||||||
|
38
env-example
38
env-example
@ -1,10 +1,11 @@
|
|||||||
### Application
|
### Application
|
||||||
# Point to your application code, wish should be available at `/var/www`
|
# Point to your application code, wish should be available at `/var/www`
|
||||||
|
APPLICATION=../
|
||||||
|
|
||||||
### PHP version (Does not apply for HHVM)
|
### PHP version (Does not apply for HHVM)
|
||||||
# PHP_VERSION=55
|
|
||||||
# PHP_VERSION=56
|
# PHP_VERSION=56
|
||||||
PHP_VERSION=70
|
PHP_VERSION=70
|
||||||
|
# PHP_VERSION=71
|
||||||
|
|
||||||
### PHP interpreter
|
### PHP interpreter
|
||||||
# PHP_INTERPRETER=hhvm
|
# PHP_INTERPRETER=hhvm
|
||||||
@ -25,14 +26,15 @@ WORKSPACE_INSTALL_LARAVEL_ENVOY=false
|
|||||||
WORKSPACE_INSTALL_DEPLOYER=false
|
WORKSPACE_INSTALL_DEPLOYER=false
|
||||||
WORKSPACE_INSTALL_LINUXBREW=false
|
WORKSPACE_INSTALL_LINUXBREW=false
|
||||||
WORKSPACE_INSTALL_MC=false
|
WORKSPACE_INSTALL_MC=false
|
||||||
|
WORKSPACE_INSTALL_SYMFONY=false
|
||||||
WORKSPACE_PUID=1000
|
WORKSPACE_PUID=1000
|
||||||
WORKSPACE_PGID=1000
|
WORKSPACE_PGID=1000
|
||||||
WORKSPACE_NODE_VERSION=stable
|
WORKSPACE_NODE_VERSION=stable
|
||||||
|
WORKSPACE_YARN_VERSION=latest
|
||||||
WORKSPACE_TIMEZONE=UTC
|
WORKSPACE_TIMEZONE=UTC
|
||||||
WORKSPACE_SSH_PORT=2222
|
WORKSPACE_SSH_PORT=2222
|
||||||
|
|
||||||
### PHP_FPM Container
|
### PHP_FPM Container
|
||||||
PHP_FPM_DOCKER_FILE=Dockerfile-70
|
|
||||||
PHP_FPM_INSTALL_XDEBUG=false
|
PHP_FPM_INSTALL_XDEBUG=false
|
||||||
PHP_FPM_INSTALL_MONGO=false
|
PHP_FPM_INSTALL_MONGO=false
|
||||||
PHP_FPM_INSTALL_SOAP=false
|
PHP_FPM_INSTALL_SOAP=false
|
||||||
@ -44,6 +46,7 @@ PHP_FPM_INSTALL_OPCACHE=false
|
|||||||
PHP_FPM_INSTALL_EXIF=false
|
PHP_FPM_INSTALL_EXIF=false
|
||||||
PHP_FPM_INSTALL_AEROSPIKE_EXTENSION=false
|
PHP_FPM_INSTALL_AEROSPIKE_EXTENSION=false
|
||||||
PHP_FPM_INSTALL_MYSQLI=false
|
PHP_FPM_INSTALL_MYSQLI=false
|
||||||
|
PHP_FPM_INSTALL_MYSQL=false
|
||||||
PHP_FPM_INSTALL_TOKENIZER=false
|
PHP_FPM_INSTALL_TOKENIZER=false
|
||||||
PHP_FPM_INSTALL_INTL=false
|
PHP_FPM_INSTALL_INTL=false
|
||||||
|
|
||||||
@ -67,12 +70,17 @@ MYSQL_PASSWORD=secret
|
|||||||
MYSQL_PORT=3306
|
MYSQL_PORT=3306
|
||||||
MYSQL_ROOT_PASSWORD=root
|
MYSQL_ROOT_PASSWORD=root
|
||||||
|
|
||||||
|
### MSSQL Container
|
||||||
|
MSSQL_DATABASE=homestead
|
||||||
|
MSSQL_PASSWORD=yourStrong(!)Password
|
||||||
|
MSSQL_PORT=1433
|
||||||
|
|
||||||
### MARIADB Container
|
### MARIADB Container
|
||||||
MARIADB_DATABASE=default
|
MARIADB_DATABASE=default
|
||||||
MARIADB_USER=default
|
MARIADB_USER=default
|
||||||
MARIADB_PASSWORD=secret
|
MARIADB_PASSWORD=secret
|
||||||
MARIADB_PORT=3306
|
MARIADB_PORT=3306
|
||||||
|
MARIADB_ROOT_PASSWORD=root
|
||||||
|
|
||||||
### POSTGRES Container
|
### POSTGRES Container
|
||||||
POSTGRES_DB=default
|
POSTGRES_DB=default
|
||||||
@ -116,10 +124,34 @@ PMA_PASSWORD=secret
|
|||||||
PMA_ROOT_PASSWORD=secret
|
PMA_ROOT_PASSWORD=secret
|
||||||
PMA_PORT=88
|
PMA_PORT=88
|
||||||
|
|
||||||
|
### ADMINER Container
|
||||||
|
ADM_PORT=88
|
||||||
|
|
||||||
|
### VARNISH Container
|
||||||
|
VARNISH_CONFIG=/etc/varnish/default.vcl
|
||||||
|
VARNISH_PORT=8080
|
||||||
|
VARNISH_BACKEND_PORT=8888
|
||||||
|
VARNISHD_PARAMS=-p default_ttl=3600 -p default_grace=3600
|
||||||
|
|
||||||
|
### Varnish Proxy 1 Container
|
||||||
|
VARNISH_PROXY1_CACHE_SIZE=128m
|
||||||
|
VARNISH_PROXY1_BACKEND_HOST=workspace
|
||||||
|
VARNISH_PROXY1_SERVER=SERVER1
|
||||||
|
|
||||||
|
### Varnish Proxy 2 Container
|
||||||
|
VARNISH_PROXY2_CACHE_SIZE=128m
|
||||||
|
VARNISH_PROXY2_BACKEND_HOST=workspace
|
||||||
|
VARNISH_PROXY2_SERVER=SERVER2
|
||||||
|
|
||||||
|
### HAPROXY Container
|
||||||
|
HAPROXY_HOST_HTTP_PORT=8085
|
||||||
|
|
||||||
### MISC
|
### MISC
|
||||||
# Replace with your Docker Host IP (will be appended to /etc/hosts)
|
# Replace with your Docker Host IP (will be appended to /etc/hosts)
|
||||||
DOCKER_HOST_IP=10.0.75.1
|
DOCKER_HOST_IP=10.0.75.1
|
||||||
# The Remote Interpreter entry matching name `laradock`
|
# The Remote Interpreter entry matching name `laradock`
|
||||||
PHP_IDE_CONFIG=serverName=laradock
|
PHP_IDE_CONFIG=serverName=laradock
|
||||||
|
# Fix for windows users to make sure the application path works.
|
||||||
|
COMPOSE_CONVERT_WINDOWS_PATHS=1
|
||||||
|
|
||||||
### to be continue neo4j mongo rethinkdb redis aerospike pgadmin ...
|
### to be continue neo4j mongo rethinkdb redis aerospike pgadmin ...
|
||||||
|
5
haproxy/Dockerfile
Normal file
5
haproxy/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
FROM dockercloud/haproxy:latest
|
||||||
|
|
||||||
|
MAINTAINER ZeroC0D3 Team<zeroc0d3.team@gmail.com>
|
||||||
|
|
||||||
|
EXPOSE 80
|
@ -1,5 +1,7 @@
|
|||||||
FROM ubuntu:14.04
|
FROM ubuntu:14.04
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
|
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
|
||||||
|
|
||||||
RUN apt-get update -y \
|
RUN apt-get update -y \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
FROM mailhog/mailhog
|
FROM mailhog/mailhog
|
||||||
|
|
||||||
Maintainer Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
CMD ["Mailhog"]
|
CMD ["Mailhog"]
|
||||||
|
|
||||||
|
23
mssql/Dockerfile
Normal file
23
mssql/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
FROM microsoft/mssql-server-linux
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
# Create config directory
|
||||||
|
# an set it as WORKDIR
|
||||||
|
RUN mkdir -p /usr/src/app
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Bundle app source
|
||||||
|
COPY . /usr/src/app
|
||||||
|
|
||||||
|
RUN chmod +x /usr/src/app/create_table.sh
|
||||||
|
|
||||||
|
ENV MSSQL_DATABASE=$MSSQL_DATABASE
|
||||||
|
ENV ACCEPT_EULA=Y
|
||||||
|
ENV SA_PASSWORD=$MSSQL_PASSWORD
|
||||||
|
|
||||||
|
VOLUME /var/opt/mssql
|
||||||
|
|
||||||
|
EXPOSE 1433
|
||||||
|
|
||||||
|
CMD /bin/bash ./entrypoint.sh
|
5
mssql/create_table.sh
Normal file
5
mssql/create_table.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#wait for the SQL Server to come up
|
||||||
|
sleep 45s
|
||||||
|
|
||||||
|
#run the setup script to create the DB and the schema in the DB
|
||||||
|
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SA_PASSWORD -d master -i setup.sql
|
2
mssql/entrypoint.sh
Normal file
2
mssql/entrypoint.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#start SQL Server, start the script to create the DB and import the data, start the app
|
||||||
|
/opt/mssql/bin/sqlservr.sh & /usr/src/app/create_table.sh & tail -f /dev/null
|
4
mssql/setup.sql
Normal file
4
mssql/setup.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
CREATE DATABASE $(MSSQL_DATABASE);
|
||||||
|
GO
|
||||||
|
USE $(MSSQL_DATABASE);
|
||||||
|
GO
|
@ -1,4 +1,4 @@
|
|||||||
DROP USER IF EXISTS 'MYSQL_USER';
|
DROP USER IF EXISTS 'MYSQL_USER';
|
||||||
CREATE USER 'MYSQL_USER'@'%';
|
CREATE USER 'MYSQL_USER'@'%' IDENTIFIED BY 'MYSQL_PASSWORD';
|
||||||
CREATE DATABASE IF NOT EXISTS MYSQL_DATABASE;
|
CREATE DATABASE IF NOT EXISTS `MYSQL_DATABASE`;
|
||||||
GRANT ALL ON MYSQL_DATABASE.* TO 'MYSQL_USER'@'%' IDENTIFIED BY 'MYSQL_PASSWORD';
|
GRANT ALL ON `MYSQL_DATABASE`.* TO 'MYSQL_USER'@'%';
|
||||||
|
@ -19,8 +19,8 @@ http {
|
|||||||
client_max_body_size 20M;
|
client_max_body_size 20M;
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
access_log /var/log/nginx/access.log;
|
access_log /dev/stdout;
|
||||||
error_log /var/log/nginx/error.log;
|
error_log /dev/stderr;
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_disable "msie6";
|
gzip_disable "msie6";
|
||||||
|
|
||||||
|
@ -83,8 +83,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|||||||
ARG INSTALL_ZIP_ARCHIVE=false
|
ARG INSTALL_ZIP_ARCHIVE=false
|
||||||
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
||||||
# Install the zip extension
|
# Install the zip extension
|
||||||
pecl install zip && \
|
docker-php-ext-install zip \
|
||||||
docker-php-ext-enable zip \
|
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -108,6 +107,20 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
|
|||||||
docker-php-ext-enable memcached \
|
docker-php-ext-enable memcached \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# PHP MySQL:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_MYSQL=false
|
||||||
|
COPY ./mysql.ini /usr/local/etc/php/conf.d/mysql.ini
|
||||||
|
RUN if [ ${INSTALL_MYSQL} = true ]; then \
|
||||||
|
# Install the php mysql extension
|
||||||
|
docker-php-ext-install mysql && \
|
||||||
|
docker-php-ext-install mysqli && \
|
||||||
|
docker-php-ext-enable mysql && \
|
||||||
|
docker-php-ext-enable mysqli \
|
||||||
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# PHP Aerospike:
|
# PHP Aerospike:
|
||||||
#####################################
|
#####################################
|
||||||
|
@ -45,7 +45,7 @@ ARG INSTALL_SOAP=false
|
|||||||
RUN if [ ${INSTALL_SOAP} = true ]; then \
|
RUN if [ ${INSTALL_SOAP} = true ]; then \
|
||||||
# Install the soap extension
|
# Install the soap extension
|
||||||
apt-get -y update && \
|
apt-get -y update && \
|
||||||
apt-get -y install libxml2-dev php-soap && \
|
apt-get -y install libxml2-dev php-soap && \
|
||||||
docker-php-ext-install soap \
|
docker-php-ext-install soap \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
@ -92,8 +92,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|||||||
ARG INSTALL_ZIP_ARCHIVE=false
|
ARG INSTALL_ZIP_ARCHIVE=false
|
||||||
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
||||||
# Install the zip extension
|
# Install the zip extension
|
||||||
pecl install zip && \
|
docker-php-ext-install zip \
|
||||||
docker-php-ext-enable zip \
|
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -192,6 +191,79 @@ RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
|
|||||||
docker-php-ext-install tokenizer \
|
docker-php-ext-install tokenizer \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# SQL SERVER:
|
||||||
|
#####################################
|
||||||
|
ARG MSSQL=false
|
||||||
|
RUN if [ ${MSSQL} = true ]; then \
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Install Depenencies:
|
||||||
|
#####################################
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --force-yes wget apt-transport-https curl freetds-common php5-odbc libsybdb5 freetds-bin unixodbc unixodbc-dev php5-sybase && \
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# The following steps were taken from
|
||||||
|
# Microsoft's github account:
|
||||||
|
# https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-getting-pdo_sqlsrv-for-PHP-7.0-on-Debian-in-3-ways
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Add PHP 7 repository
|
||||||
|
# for Debian jessie
|
||||||
|
# And System upgrade
|
||||||
|
echo "deb http://packages.dotdeb.org jessie all" \
|
||||||
|
| tee /etc/apt/sources.list.d/dotdeb.list \
|
||||||
|
&& wget -qO- https://www.dotdeb.org/dotdeb.gpg \
|
||||||
|
| apt-key add - \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get upgrade -qq && \
|
||||||
|
|
||||||
|
# Install UnixODBC
|
||||||
|
# Compile odbc_config as it is not part of unixodbc package
|
||||||
|
apt-get install -y whiptail \
|
||||||
|
unixodbc libgss3 odbcinst devscripts debhelper dh-exec dh-autoreconf libreadline-dev libltdl-dev \
|
||||||
|
&& dget -u -x http://http.debian.net/debian/pool/main/u/unixodbc/unixodbc_2.3.1-3.dsc \
|
||||||
|
&& cd unixodbc-*/ \
|
||||||
|
&& dpkg-buildpackage -uc -us -B -d \
|
||||||
|
&& cp -v ./exe/odbc_config /usr/local/bin/ && \
|
||||||
|
|
||||||
|
# Fake uname for install.sh
|
||||||
|
printf '#!/bin/bash\nif [ "$*" == "-p" ]; then echo "x86_64"; else /bin/uname "$@"; fi' \
|
||||||
|
| tee /usr/local/bin/uname \
|
||||||
|
&& chmod +x /usr/local/bin/uname && \
|
||||||
|
|
||||||
|
# Microsoft ODBC Driver 13 for Linux
|
||||||
|
# Note: There's a copy of this tar on my hubiC
|
||||||
|
wget -nv -O msodbcsql-13.0.0.0.tar.gz \
|
||||||
|
"https://meetsstorenew.blob.core.windows.net/contianerhd/Ubuntu%2013.0%20Tar/msodbcsql-13.0.0.0.tar.gz?st=2016-10-18T17%3A29%3A00Z&se=2022-10-19T17%3A29%3A00Z&sp=rl&sv=2015-04-05&sr=b&sig=cDwPfrouVeIQf0vi%2BnKt%2BzX8Z8caIYvRCmicDL5oknY%3D" \
|
||||||
|
&& tar -xf msodbcsql-13.0.0.0.tar.gz \
|
||||||
|
&& cd msodbcsql-*/ \
|
||||||
|
&& ldd lib64/libmsodbcsql-13.0.so.0.0 \
|
||||||
|
&& ./install.sh install --accept-license \
|
||||||
|
&& ls -l /opt/microsoft/msodbcsql/ \
|
||||||
|
&& odbcinst -q -d -n "ODBC Driver 13 for SQL Server" && \
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Install sqlsrv y pdo_sqlsrv
|
||||||
|
# extensions:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
pecl install sqlsrv-4.0.6 && \
|
||||||
|
pecl install pdo_sqlsrv-4.0.6 && \
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Set locales for the container
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
apt-get install -y locales \
|
||||||
|
&& echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
|
||||||
|
&& locale-gen \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# Human Language and Character Encoding Support:
|
# Human Language and Character Encoding Support:
|
||||||
#####################################
|
#####################################
|
||||||
@ -218,6 +290,7 @@ RUN if [ ${GHOSTSCRIPT} = true ]; then \
|
|||||||
ghostscript \
|
ghostscript \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Final Touch
|
# Final Touch
|
||||||
|
@ -69,8 +69,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|||||||
ARG INSTALL_ZIP_ARCHIVE=false
|
ARG INSTALL_ZIP_ARCHIVE=false
|
||||||
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
|
||||||
# Install the zip extension
|
# Install the zip extension
|
||||||
pecl install zip && \
|
docker-php-ext-install zip \
|
||||||
docker-php-ext-enable zip \
|
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -130,13 +129,19 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \
|
|||||||
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
|
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# Codeigniter Modifications:
|
# Mysqli Modifications:
|
||||||
|
#####################################
|
||||||
|
ARG INSTALL_MYSQLI=false
|
||||||
|
RUN if [ ${INSTALL_MYSQLI} = true ]; then \
|
||||||
|
docker-php-ext-install mysqli \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Tokenizer Modifications:
|
||||||
#####################################
|
#####################################
|
||||||
|
|
||||||
ARG CODEIGNITER=false
|
ARG INSTALL_TOKENIZER=false
|
||||||
RUN if [ ${CODEIGNITER} = true ]; then \
|
RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
|
||||||
# Install Codeigniter PHP extentions requirements
|
|
||||||
docker-php-ext-install mysqli && \
|
|
||||||
docker-php-ext-install tokenizer \
|
docker-php-ext-install tokenizer \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
@ -11,3 +11,6 @@ upload_max_filesize = 20M
|
|||||||
; Sets max size of post data allowed.
|
; Sets max size of post data allowed.
|
||||||
; http://php.net/post-max-size
|
; http://php.net/post-max-size
|
||||||
post_max_size = 20M
|
post_max_size = 20M
|
||||||
|
; Enables the MSSQL extensions
|
||||||
|
extension=sqlsrv.so
|
||||||
|
extension=pdo_sqlsrv.so
|
58
php-fpm/mysql.ini
Normal file
58
php-fpm/mysql.ini
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
[MySQL]
|
||||||
|
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
|
||||||
|
; http://php.net/mysql.allow_local_infile
|
||||||
|
mysql.allow_local_infile = On
|
||||||
|
|
||||||
|
; Allow or prevent persistent links.
|
||||||
|
; http://php.net/mysql.allow-persistent
|
||||||
|
mysql.allow_persistent = On
|
||||||
|
|
||||||
|
; If mysqlnd is used: Number of cache slots for the internal result set cache
|
||||||
|
; http://php.net/mysql.cache_size
|
||||||
|
mysql.cache_size = 2000
|
||||||
|
|
||||||
|
; Maximum number of persistent links. -1 means no limit.
|
||||||
|
; http://php.net/mysql.max-persistent
|
||||||
|
mysql.max_persistent = -1
|
||||||
|
|
||||||
|
; Maximum number of links (persistent + non-persistent). -1 means no limit.
|
||||||
|
; http://php.net/mysql.max-links
|
||||||
|
mysql.max_links = -1
|
||||||
|
|
||||||
|
; Default port number for mysql_connect(). If unset, mysql_connect() will use
|
||||||
|
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
|
||||||
|
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
|
||||||
|
; at MYSQL_PORT.
|
||||||
|
; http://php.net/mysql.default-port
|
||||||
|
mysql.default_port =
|
||||||
|
|
||||||
|
; Default socket name for local MySQL connects. If empty, uses the built-in
|
||||||
|
; MySQL defaults.
|
||||||
|
; http://php.net/mysql.default-socket
|
||||||
|
mysql.default_socket =
|
||||||
|
|
||||||
|
; Default host for mysql_connect() (doesn't apply in safe mode).
|
||||||
|
; http://php.net/mysql.default-host
|
||||||
|
mysql.default_host =
|
||||||
|
|
||||||
|
; Default user for mysql_connect() (doesn't apply in safe mode).
|
||||||
|
; http://php.net/mysql.default-user
|
||||||
|
mysql.default_user =
|
||||||
|
|
||||||
|
; Default password for mysql_connect() (doesn't apply in safe mode).
|
||||||
|
; Note that this is generally a *bad* idea to store passwords in this file.
|
||||||
|
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
|
||||||
|
; and reveal this password! And of course, any users with read access to this
|
||||||
|
; file will be able to reveal the password as well.
|
||||||
|
; http://php.net/mysql.default-password
|
||||||
|
mysql.default_password =
|
||||||
|
|
||||||
|
; Maximum time (in seconds) for connect timeout. -1 means no limit
|
||||||
|
; http://php.net/mysql.connect-timeout
|
||||||
|
mysql.connect_timeout = 60
|
||||||
|
|
||||||
|
; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
|
||||||
|
; SQL-Errors will be displayed.
|
||||||
|
; http://php.net/mysql.trace-mode
|
||||||
|
mysql.trace_mode = Off
|
||||||
|
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
FROM nielsvdoorn/laravel-supervisor
|
FROM nielsvdoorn/laravel-supervisor
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Optional Supervisord Configuration
|
# Optional Supervisord Configuration
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
nodaemon=true
|
nodaemon=true
|
||||||
[program:laravel-worker]
|
[program:laravel-worker]
|
||||||
process_name=%(program_name)s_%(process_num)02d
|
process_name=%(program_name)s_%(process_num)02d
|
||||||
command=php /var/www/laravel/artisan queue:work --sleep=3 --tries=3 --daemon
|
command=php /var/www/artisan queue:work --sleep=3 --tries=3 --daemon
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
numprocs=8
|
numprocs=8
|
||||||
redirect_stderr=true
|
redirect_stderr=true
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
FROM mdillon/postgis:latest
|
FROM mdillon/postgis:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
CMD ["postgres"]
|
CMD ["postgres"]
|
||||||
|
|
||||||
EXPOSE 5432
|
EXPOSE 5432
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
FROM rabbitmq
|
FROM rabbitmq
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
RUN rabbitmq-plugins enable --offline rabbitmq_management
|
RUN rabbitmq-plugins enable --offline rabbitmq_management
|
||||||
|
|
||||||
EXPOSE 15671 15672
|
EXPOSE 15671 15672
|
||||||
|
29
varnish/Dockerfile
Normal file
29
varnish/Dockerfile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
FROM debian:latest
|
||||||
|
|
||||||
|
MAINTAINER ZeroC0D3 Team<zeroc0d3.team@gmail.com>
|
||||||
|
|
||||||
|
# Set Environment Variables
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# Install Dependencies
|
||||||
|
RUN apt-get update && apt-get install -y apt-utils && apt-get upgrade -y
|
||||||
|
RUN mkdir /home/site && mkdir /home/site/cache
|
||||||
|
RUN apt-get install -y varnish
|
||||||
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Setting Configurations
|
||||||
|
ENV VARNISH_CONFIG /etc/varnish/default.vcl
|
||||||
|
ENV CACHE_SIZE 128m
|
||||||
|
ENV VARNISHD_PARAMS -p default_ttl=3600 -p default_grace=3600
|
||||||
|
ENV VARNISH_PORT 6081
|
||||||
|
ENV BACKEND_HOST localhost
|
||||||
|
ENV BACKEND_PORT 80
|
||||||
|
|
||||||
|
ADD default.vcl /etc/varnish/default.vcl
|
||||||
|
ADD start.sh /etc/varnish/start.sh
|
||||||
|
|
||||||
|
RUN chmod +x /etc/varnish/start.sh
|
||||||
|
|
||||||
|
CMD ["/etc/varnish/start.sh"]
|
||||||
|
|
||||||
|
EXPOSE 8080
|
415
varnish/default.vcl
Normal file
415
varnish/default.vcl
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
vcl 4.0;
|
||||||
|
# Based on: https://github.com/mattiasgeniar/varnish-4.0-configuration-templates/blob/master/default.vcl
|
||||||
|
|
||||||
|
import std;
|
||||||
|
import directors;
|
||||||
|
|
||||||
|
backend server1 { # Define one backend
|
||||||
|
.host = "${BACKEND_HOST}"; # IP or Hostname of backend
|
||||||
|
.port = "${BACKEND_PORT}"; # Port Apache or whatever is listening
|
||||||
|
.max_connections = 300; # That's it
|
||||||
|
|
||||||
|
.probe = {
|
||||||
|
#.url = "/"; # short easy way (GET /)
|
||||||
|
# We prefer to only do a HEAD /
|
||||||
|
.request =
|
||||||
|
"HEAD / HTTP/1.1"
|
||||||
|
"Host: ${BACKEND_HOST}"
|
||||||
|
"Connection: close"
|
||||||
|
"User-Agent: Varnish Health Probe";
|
||||||
|
|
||||||
|
.interval = 5s; # check the health of each backend every 5 seconds
|
||||||
|
.timeout = 1s; # timing out after 1 second.
|
||||||
|
.window = 5; # If 3 out of the last 5 polls succeeded the backend is considered healthy, otherwise it will be marked as sick
|
||||||
|
.threshold = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first_byte_timeout = 300s; # How long to wait before we receive a first byte from our backend?
|
||||||
|
.connect_timeout = 5s; # How long to wait for a backend connection?
|
||||||
|
.between_bytes_timeout = 2s; # How long to wait between bytes received from our backend?
|
||||||
|
}
|
||||||
|
|
||||||
|
acl purge {
|
||||||
|
# ACL we'll use later to allow purges
|
||||||
|
"localhost";
|
||||||
|
"127.0.0.1";
|
||||||
|
"::1";
|
||||||
|
}
|
||||||
|
|
||||||
|
#acl editors {
|
||||||
|
# # ACL to honor the "Cache-Control: no-cache" header to force a refresh but only from selected IPs
|
||||||
|
# "localhost";
|
||||||
|
# "127.0.0.1";
|
||||||
|
# "::1";
|
||||||
|
#}
|
||||||
|
|
||||||
|
sub vcl_init {
|
||||||
|
# Called when VCL is loaded, before any requests pass through it.
|
||||||
|
# Typically used to initialize VMODs.
|
||||||
|
|
||||||
|
new vdir = directors.round_robin();
|
||||||
|
vdir.add_backend(server1);
|
||||||
|
# vdir.add_backend(servern);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_recv {
|
||||||
|
# Called at the beginning of a request, after the complete request has been received and parsed.
|
||||||
|
# Its purpose is to decide whether or not to serve the request, how to do it, and, if applicable,
|
||||||
|
# which backend to use.
|
||||||
|
# also used to modify the request
|
||||||
|
|
||||||
|
set req.backend_hint = vdir.backend(); # send all traffic to the vdir director
|
||||||
|
|
||||||
|
# Normalize the header, remove the port (in case you're testing this on various TCP ports)
|
||||||
|
set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
|
||||||
|
|
||||||
|
# Remove the proxy header (see https://httpoxy.org/#mitigate-varnish)
|
||||||
|
unset req.http.proxy;
|
||||||
|
|
||||||
|
# Normalize the query arguments
|
||||||
|
set req.url = std.querysort(req.url);
|
||||||
|
|
||||||
|
# Allow purging
|
||||||
|
if (req.method == "PURGE") {
|
||||||
|
if (!client.ip ~ purge) { # purge is the ACL defined at the begining
|
||||||
|
# Not from an allowed IP? Then die with an error.
|
||||||
|
return (synth(405, "This IP is not allowed to send PURGE requests."));
|
||||||
|
}
|
||||||
|
# If you got this stage (and didn't error out above), purge the cached result
|
||||||
|
return (purge);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only deal with "normal" types
|
||||||
|
if (req.method != "GET" &&
|
||||||
|
req.method != "HEAD" &&
|
||||||
|
req.method != "PUT" &&
|
||||||
|
req.method != "POST" &&
|
||||||
|
req.method != "TRACE" &&
|
||||||
|
req.method != "OPTIONS" &&
|
||||||
|
req.method != "PATCH" &&
|
||||||
|
req.method != "DELETE") {
|
||||||
|
# Non-RFC2616 or CONNECT which is weird.
|
||||||
|
return (pipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Implementing websocket support (https://www.varnish-cache.org/docs/4.0/users-guide/vcl-example-websockets.html)
|
||||||
|
if (req.http.Upgrade ~ "(?i)websocket") {
|
||||||
|
return (pipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only cache GET or HEAD requests. This makes sure the POST requests are always passed.
|
||||||
|
if (req.method != "GET" && req.method != "HEAD") {
|
||||||
|
return (pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Some generic URL manipulation, useful for all templates that follow
|
||||||
|
# First remove the Google Analytics added parameters, useless for our backend
|
||||||
|
if (req.url ~ "(\?|&)(utm_source|utm_medium|utm_campaign|utm_content|gclid|cx|ie|cof|siteurl)=") {
|
||||||
|
set req.url = regsuball(req.url, "&(utm_source|utm_medium|utm_campaign|utm_content|gclid|cx|ie|cof|siteurl)=([A-z0-9_\-\.%25]+)", "");
|
||||||
|
set req.url = regsuball(req.url, "\?(utm_source|utm_medium|utm_campaign|utm_content|gclid|cx|ie|cof|siteurl)=([A-z0-9_\-\.%25]+)", "?");
|
||||||
|
set req.url = regsub(req.url, "\?&", "?");
|
||||||
|
set req.url = regsub(req.url, "\?$", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Strip hash, server doesn't need it.
|
||||||
|
if (req.url ~ "\#") {
|
||||||
|
set req.url = regsub(req.url, "\#.*$", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Strip a trailing ? if it exists
|
||||||
|
if (req.url ~ "\?$") {
|
||||||
|
set req.url = regsub(req.url, "\?$", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Some generic cookie manipulation, useful for all templates that follow
|
||||||
|
# Remove the "has_js" cookie
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "has_js=[^;]+(; )?", "");
|
||||||
|
|
||||||
|
# Remove any Google Analytics based cookies
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "__utm.=[^;]+(; )?", "");
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "_ga=[^;]+(; )?", "");
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "_gat=[^;]+(; )?", "");
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "utmctr=[^;]+(; )?", "");
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "utmcmd.=[^;]+(; )?", "");
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "utmccn.=[^;]+(; )?", "");
|
||||||
|
|
||||||
|
# Remove DoubleClick offensive cookies
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "__gads=[^;]+(; )?", "");
|
||||||
|
|
||||||
|
# Remove the Quant Capital cookies (added by some plugin, all __qca)
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "__qc.=[^;]+(; )?", "");
|
||||||
|
|
||||||
|
# Remove the AddThis cookies
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "__atuv.=[^;]+(; )?", "");
|
||||||
|
|
||||||
|
# Remove a ";" prefix in the cookie if present
|
||||||
|
set req.http.Cookie = regsuball(req.http.Cookie, "^;\s*", "");
|
||||||
|
|
||||||
|
# Are there cookies left with only spaces or that are empty?
|
||||||
|
if (req.http.cookie ~ "^\s*$") {
|
||||||
|
unset req.http.cookie;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.http.Cache-Control ~ "(?i)no-cache") {
|
||||||
|
#if (req.http.Cache-Control ~ "(?i)no-cache" && client.ip ~ editors) { # create the acl editors if you want to restrict the Ctrl-F5
|
||||||
|
# http://varnish.projects.linpro.no/wiki/VCLExampleEnableForceRefresh
|
||||||
|
# Ignore requests via proxy caches and badly behaved crawlers
|
||||||
|
# like msnbot that send no-cache with every request.
|
||||||
|
if (! (req.http.Via || req.http.User-Agent ~ "(?i)bot" || req.http.X-Purge)) {
|
||||||
|
#set req.hash_always_miss = true; # Doesn't seems to refresh the object in the cache
|
||||||
|
return(purge); # Couple this with restart in vcl_purge and X-Purge header to avoid loops
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Large static files are delivered directly to the end-user without
|
||||||
|
# waiting for Varnish to fully read the file first.
|
||||||
|
# Varnish 4 fully supports Streaming, so set do_stream in vcl_backend_response()
|
||||||
|
if (req.url ~ "^[^?]*\.(7z|avi|bz2|flac|flv|gz|mka|mkv|mov|mp3|mp4|mpeg|mpg|ogg|ogm|opus|rar|tar|tgz|tbz|txz|wav|webm|xz|zip)(\?.*)?$") {
|
||||||
|
unset req.http.Cookie;
|
||||||
|
return (hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove all cookies for static files
|
||||||
|
# A valid discussion could be held on this line: do you really need to cache static files that don't cause load? Only if you have memory left.
|
||||||
|
# Sure, there's disk I/O, but chances are your OS will already have these files in their buffers (thus memory).
|
||||||
|
# Before you blindly enable this, have a read here: https://ma.ttias.be/stop-caching-static-files/
|
||||||
|
if (req.url ~ "^[^?]*\.(7z|avi|bmp|bz2|css|csv|doc|docx|eot|flac|flv|gif|gz|ico|jpeg|jpg|js|less|mka|mkv|mov|mp3|mp4|mpeg|mpg|odt|otf|ogg|ogm|opus|pdf|png|ppt|pptx|rar|rtf|svg|svgz|swf|tar|tbz|tgz|ttf|txt|txz|wav|webm|webp|woff|woff2|xls|xlsx|xml|xz|zip)(\?.*)?$") {
|
||||||
|
unset req.http.Cookie;
|
||||||
|
return (hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send Surrogate-Capability headers to announce ESI support to backend
|
||||||
|
set req.http.Surrogate-Capability = "key=ESI/1.0";
|
||||||
|
|
||||||
|
if (req.http.Authorization) {
|
||||||
|
# Not cacheable by default
|
||||||
|
return (pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_pipe {
|
||||||
|
# Called upon entering pipe mode.
|
||||||
|
# In this mode, the request is passed on to the backend, and any further data from both the client
|
||||||
|
# and backend is passed on unaltered until either end closes the connection. Basically, Varnish will
|
||||||
|
# degrade into a simple TCP proxy, shuffling bytes back and forth. For a connection in pipe mode,
|
||||||
|
# no other VCL subroutine will ever get called after vcl_pipe.
|
||||||
|
|
||||||
|
# Note that only the first request to the backend will have
|
||||||
|
# X-Forwarded-For set. If you use X-Forwarded-For and want to
|
||||||
|
# have it set for all requests, make sure to have:
|
||||||
|
# set bereq.http.connection = "close";
|
||||||
|
# here. It is not set by default as it might break some broken web
|
||||||
|
# applications, like IIS with NTLM authentication.
|
||||||
|
|
||||||
|
# set bereq.http.Connection = "Close";
|
||||||
|
|
||||||
|
# Implementing websocket support (https://www.varnish-cache.org/docs/4.0/users-guide/vcl-example-websockets.html)
|
||||||
|
if (req.http.upgrade) {
|
||||||
|
set bereq.http.upgrade = req.http.upgrade;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (pipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_pass {
|
||||||
|
# Called upon entering pass mode. In this mode, the request is passed on to the backend, and the
|
||||||
|
# backend's response is passed on to the client, but is not entered into the cache. Subsequent
|
||||||
|
# requests submitted over the same client connection are handled normally.
|
||||||
|
|
||||||
|
# return (pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
# The data on which the hashing will take place
|
||||||
|
sub vcl_hash {
|
||||||
|
# Called after vcl_recv to create a hash value for the request. This is used as a key
|
||||||
|
# to look up the object in Varnish.
|
||||||
|
|
||||||
|
hash_data(req.url);
|
||||||
|
|
||||||
|
if (req.http.host) {
|
||||||
|
hash_data(req.http.host);
|
||||||
|
} else {
|
||||||
|
hash_data(server.ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
# hash cookies for requests that have them
|
||||||
|
if (req.http.Cookie) {
|
||||||
|
hash_data(req.http.Cookie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_hit {
|
||||||
|
# Called when a cache lookup is successful.
|
||||||
|
|
||||||
|
if (obj.ttl >= 0s) {
|
||||||
|
# A pure unadultered hit, deliver it
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://www.varnish-cache.org/docs/trunk/users-guide/vcl-grace.html
|
||||||
|
# When several clients are requesting the same page Varnish will send one request to the backend and place the others on hold while fetching one copy from the backend. In some products this is called request coalescing and Varnish does this automatically.
|
||||||
|
# If you are serving thousands of hits per second the queue of waiting requests can get huge. There are two potential problems - one is a thundering herd problem - suddenly releasing a thousand threads to serve content might send the load sky high. Secondly - nobody likes to wait. To deal with this we can instruct Varnish to keep the objects in cache beyond their TTL and to serve the waiting requests somewhat stale content.
|
||||||
|
|
||||||
|
# if (!std.healthy(req.backend_hint) && (obj.ttl + obj.grace > 0s)) {
|
||||||
|
# return (deliver);
|
||||||
|
# } else {
|
||||||
|
# return (fetch);
|
||||||
|
# }
|
||||||
|
|
||||||
|
# We have no fresh fish. Lets look at the stale ones.
|
||||||
|
if (std.healthy(req.backend_hint)) {
|
||||||
|
# Backend is healthy. Limit age to 10s.
|
||||||
|
if (obj.ttl + 10s > 0s) {
|
||||||
|
#set req.http.grace = "normal(limited)";
|
||||||
|
return (deliver);
|
||||||
|
} else {
|
||||||
|
# No candidate for grace. Fetch a fresh object.
|
||||||
|
return(fetch);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# backend is sick - use full grace
|
||||||
|
if (obj.ttl + obj.grace > 0s) {
|
||||||
|
#set req.http.grace = "full";
|
||||||
|
return (deliver);
|
||||||
|
} else {
|
||||||
|
# no graced object.
|
||||||
|
return (fetch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# fetch & deliver once we get the result
|
||||||
|
return (fetch); # Dead code, keep as a safeguard
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_miss {
|
||||||
|
# Called after a cache lookup if the requested document was not found in the cache. Its purpose
|
||||||
|
# is to decide whether or not to attempt to retrieve the document from the backend, and which
|
||||||
|
# backend to use.
|
||||||
|
|
||||||
|
return (fetch);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle the HTTP request coming from our backend
|
||||||
|
sub vcl_backend_response {
|
||||||
|
# Called after the response headers has been successfully retrieved from the backend.
|
||||||
|
|
||||||
|
# Pause ESI request and remove Surrogate-Control header
|
||||||
|
if (beresp.http.Surrogate-Control ~ "ESI/1.0") {
|
||||||
|
unset beresp.http.Surrogate-Control;
|
||||||
|
set beresp.do_esi = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Enable cache for all static files
|
||||||
|
# The same argument as the static caches from above: monitor your cache size, if you get data nuked out of it, consider giving up the static file cache.
|
||||||
|
# Before you blindly enable this, have a read here: https://ma.ttias.be/stop-caching-static-files/
|
||||||
|
if (bereq.url ~ "^[^?]*\.(7z|avi|bmp|bz2|css|csv|doc|docx|eot|flac|flv|gif|gz|ico|jpeg|jpg|js|less|mka|mkv|mov|mp3|mp4|mpeg|mpg|odt|otf|ogg|ogm|opus|pdf|png|ppt|pptx|rar|rtf|svg|svgz|swf|tar|tbz|tgz|ttf|txt|txz|wav|webm|webp|woff|woff2|xls|xlsx|xml|xz|zip)(\?.*)?$") {
|
||||||
|
unset beresp.http.set-cookie;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Large static files are delivered directly to the end-user without
|
||||||
|
# waiting for Varnish to fully read the file first.
|
||||||
|
# Varnish 4 fully supports Streaming, so use streaming here to avoid locking.
|
||||||
|
if (bereq.url ~ "^[^?]*\.(7z|avi|bz2|flac|flv|gz|mka|mkv|mov|mp3|mp4|mpeg|mpg|ogg|ogm|opus|rar|tar|tgz|tbz|txz|wav|webm|xz|zip)(\?.*)?$") {
|
||||||
|
unset beresp.http.set-cookie;
|
||||||
|
set beresp.do_stream = true; # Check memory usage it'll grow in fetch_chunksize blocks (128k by default) if the backend doesn't send a Content-Length header, so only enable it for big objects
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sometimes, a 301 or 302 redirect formed via Apache's mod_rewrite can mess with the HTTP port that is being passed along.
|
||||||
|
# This often happens with simple rewrite rules in a scenario where Varnish runs on :80 and Apache on :8080 on the same box.
|
||||||
|
# A redirect can then often redirect the end-user to a URL on :8080, where it should be :80.
|
||||||
|
# This may need finetuning on your setup.
|
||||||
|
#
|
||||||
|
# To prevent accidental replace, we only filter the 301/302 redirects for now.
|
||||||
|
if (beresp.status == 301 || beresp.status == 302) {
|
||||||
|
set beresp.http.Location = regsub(beresp.http.Location, ":[0-9]+", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set 2min cache if unset for static files
|
||||||
|
if (beresp.ttl <= 0s || beresp.http.Set-Cookie || beresp.http.Vary == "*") {
|
||||||
|
set beresp.ttl = 120s; # Important, you shouldn't rely on this, SET YOUR HEADERS in the backend
|
||||||
|
set beresp.uncacheable = true;
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Don't cache 50x responses
|
||||||
|
if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504) {
|
||||||
|
return (abandon);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allow stale content, in case the backend goes down.
|
||||||
|
# make Varnish keep all objects for 6 hours beyond their TTL
|
||||||
|
set beresp.grace = 6h;
|
||||||
|
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
# The routine when we deliver the HTTP request to the user
|
||||||
|
# Last chance to modify headers that are sent to the client
|
||||||
|
sub vcl_deliver {
|
||||||
|
# Called before a cached object is delivered to the client.
|
||||||
|
|
||||||
|
if (obj.hits > 0) { # Add debug header to see if it's a HIT/MISS and the number of hits, disable when not needed
|
||||||
|
set resp.http.X-Cache = "HIT";
|
||||||
|
} else {
|
||||||
|
set resp.http.X-Cache = "MISS";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Please note that obj.hits behaviour changed in 4.0, now it counts per objecthead, not per object
|
||||||
|
# and obj.hits may not be reset in some cases where bans are in use. See bug 1492 for details.
|
||||||
|
# So take hits with a grain of salt
|
||||||
|
set resp.http.X-Cache-Hits = obj.hits;
|
||||||
|
|
||||||
|
# Remove some headers: PHP version
|
||||||
|
unset resp.http.X-Powered-By;
|
||||||
|
|
||||||
|
# Remove some headers: Apache version & OS
|
||||||
|
unset resp.http.Server;
|
||||||
|
unset resp.http.X-Drupal-Cache;
|
||||||
|
unset resp.http.X-Varnish;
|
||||||
|
unset resp.http.Via;
|
||||||
|
unset resp.http.Link;
|
||||||
|
unset resp.http.X-Generator;
|
||||||
|
unset resp.http.X-Debug-Token;
|
||||||
|
unset resp.http.X-Debug-Token-Link;
|
||||||
|
set resp.http.Server = "${VARNISH_SERVER}";
|
||||||
|
set resp.http.X-Powered-By = "MSI<surya.kejawen@gmail.com>";
|
||||||
|
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_purge {
|
||||||
|
# Only handle actual PURGE HTTP methods, everything else is discarded
|
||||||
|
if (req.method != "PURGE") {
|
||||||
|
# restart request
|
||||||
|
set req.http.X-Purge = "Yes";
|
||||||
|
return(restart);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_synth {
|
||||||
|
if (resp.status == 720) {
|
||||||
|
# We use this special error status 720 to force redirects with 301 (permanent) redirects
|
||||||
|
# To use this, call the following from anywhere in vcl_recv: return (synth(720, "http://host/new.html"));
|
||||||
|
set resp.http.Location = resp.reason;
|
||||||
|
set resp.status = 301;
|
||||||
|
return (deliver);
|
||||||
|
} elseif (resp.status == 721) {
|
||||||
|
# And we use error status 721 to force redirects with a 302 (temporary) redirect
|
||||||
|
# To use this, call the following from anywhere in vcl_recv: return (synth(720, "http://host/new.html"));
|
||||||
|
set resp.http.Location = resp.reason;
|
||||||
|
set resp.status = 302;
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (deliver);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub vcl_fini {
|
||||||
|
# Called when VCL is discarded only after all requests have exited the VCL.
|
||||||
|
# Typically used to clean up VMODs.
|
||||||
|
|
||||||
|
return (ok);
|
||||||
|
}
|
17
varnish/start.sh
Normal file
17
varnish/start.sh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
for name in BACKEND_PORT BACKEND_HOST VARNISH_SERVER
|
||||||
|
do
|
||||||
|
eval value=\$$name
|
||||||
|
sed -i "s|\${${name}}|${value}|g" /etc/varnish/default.vcl
|
||||||
|
done
|
||||||
|
|
||||||
|
exec bash -c \
|
||||||
|
"exec varnishd \
|
||||||
|
-a :$VARNISH_PORT \
|
||||||
|
-T localhost:6082 \
|
||||||
|
-F -u varnish \
|
||||||
|
-f $VARNISH_CONFIG \
|
||||||
|
-s malloc,$CACHE_SIZE \
|
||||||
|
$VARNISHD_PARAMS"
|
@ -19,7 +19,7 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|||||||
# Mandatory Software's Installation
|
# Mandatory Software's Installation
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Mandatory Software's such as ("php7.0-cli", "git", "vim", ....) are
|
# Mandatory Software's such as ("php5.6-cli", "git", "vim", ....) are
|
||||||
# installed on the base image 'laradock/workspace' image. If you want
|
# installed on the base image 'laradock/workspace' image. If you want
|
||||||
# to add more Software's or remove existing one, you need to edit the
|
# to add more Software's or remove existing one, you need to edit the
|
||||||
# base image (https://github.com/LaraDock/workspace).
|
# base image (https://github.com/LaraDock/workspace).
|
||||||
@ -60,8 +60,8 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \
|
|||||||
# Install the PHP SOAP extension
|
# Install the PHP SOAP extension
|
||||||
apt-get -y update && \
|
apt-get -y update && \
|
||||||
add-apt-repository -y ppa:ondrej/php && \
|
add-apt-repository -y ppa:ondrej/php && \
|
||||||
apt-get -y install libxml2-dev php7.0-soap && \
|
apt-get -y install libxml2-dev php5.6-soap && \
|
||||||
echo "extension=soap.so" >> /etc/php/7.0/cli/conf.d/40-soap.ini \
|
echo "extension=soap.so" >> /etc/php/5.6/cli/conf.d/40-soap.ini \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -128,12 +128,12 @@ ARG INSTALL_XDEBUG=false
|
|||||||
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||||
# Load the xdebug extension only with phpunit commands
|
# Load the xdebug extension only with phpunit commands
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y --force-yes php7.0-xdebug && \
|
apt-get install -y --force-yes php5.6-xdebug && \
|
||||||
sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \
|
sed -i 's/^/;/g' /etc/php/5.6/cli/conf.d/20-xdebug.ini && \
|
||||||
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc \
|
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc \
|
||||||
;fi
|
;fi
|
||||||
# ADD for REMOTE debugging
|
# ADD for REMOTE debugging
|
||||||
COPY ./xdebug.ini /etc/php/7.0/cli/conf.d/xdebug.ini
|
COPY ./xdebug.ini /etc/php/5.6/cli/conf.d/xdebug.ini
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# ssh:
|
# ssh:
|
||||||
@ -164,7 +164,7 @@ ENV INSTALL_MONGO ${INSTALL_MONGO}
|
|||||||
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
# Install the mongodb extension
|
# Install the mongodb extension
|
||||||
pecl install mongodb && \
|
pecl install mongodb && \
|
||||||
echo "extension=mongodb.so" >> /etc/php/7.0/cli/conf.d/30-mongodb.ini \
|
echo "extension=mongodb.so" >> /etc/php/5.6/cli/conf.d/30-mongodb.ini \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -260,7 +260,7 @@ ARG INSTALL_AEROSPIKE_EXTENSION=true
|
|||||||
ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION}
|
ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION}
|
||||||
|
|
||||||
# Copy aerospike configration for remote debugging
|
# Copy aerospike configration for remote debugging
|
||||||
COPY ./aerospike.ini /etc/php/7.0/cli/conf.d/aerospike.ini
|
COPY ./aerospike.ini /etc/php/5.6/cli/conf.d/aerospike.ini
|
||||||
|
|
||||||
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \
|
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \
|
||||||
# Install the php aerospike extension
|
# Install the php aerospike extension
|
||||||
@ -277,7 +277,7 @@ RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \
|
|||||||
;fi
|
;fi
|
||||||
|
|
||||||
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = false ]; then \
|
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = false ]; then \
|
||||||
rm /etc/php/7.0/cli/conf.d/aerospike.ini \
|
rm /etc/php/5.6/cli/conf.d/aerospike.ini \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -294,7 +294,7 @@ RUN if [ ${INSTALL_V8JS_EXTENSION} = true ]; then \
|
|||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -y php-dev php-pear libv8-5.4 \
|
&& apt-get install -y php-dev php-pear libv8-5.4 \
|
||||||
&& pecl install v8js \
|
&& pecl install v8js \
|
||||||
&& echo "extension=v8js.so" >> /etc/php/7.0/cli/php.ini \
|
&& echo "extension=v8js.so" >> /etc/php/5.6/cli/php.ini \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
427
workspace/Dockerfile-70
Normal file
427
workspace/Dockerfile-70
Normal file
@ -0,0 +1,427 @@
|
|||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Image Setup
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# To edit the 'workspace' base Image, visit its repository on Github
|
||||||
|
# https://github.com/LaraDock/workspace
|
||||||
|
#
|
||||||
|
# To change its version, see the available Tags on the Docker Hub:
|
||||||
|
# https://hub.docker.com/r/laradock/workspace/tags/
|
||||||
|
#
|
||||||
|
|
||||||
|
FROM laradock/workspace:1.3
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Mandatory Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Mandatory Software's such as ("php7.0-cli", "git", "vim", ....) are
|
||||||
|
# installed on the base image 'laradock/workspace' image. If you want
|
||||||
|
# to add more Software's or remove existing one, you need to edit the
|
||||||
|
# base image (https://github.com/LaraDock/workspace).
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Optional Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Optional Software's will only be installed if you set them to `true`
|
||||||
|
# in the `docker-compose.yml` before the build.
|
||||||
|
# Example:
|
||||||
|
# - INSTALL_NODE=false
|
||||||
|
# - ...
|
||||||
|
#
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Non-Root User:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Add a non-root user to prevent files being created with root permissions on host machine.
|
||||||
|
ARG PUID=1000
|
||||||
|
ARG PGID=1000
|
||||||
|
RUN groupadd -g $PGID laradock && \
|
||||||
|
useradd -u $PUID -g laradock -m laradock
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# SOAP:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ARG INSTALL_SOAP=false
|
||||||
|
ENV INSTALL_SOAP ${INSTALL_SOAP}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_SOAP} = true ]; then \
|
||||||
|
# Install the PHP SOAP extension
|
||||||
|
apt-get -y update && \
|
||||||
|
add-apt-repository -y ppa:ondrej/php && \
|
||||||
|
apt-get -y install libxml2-dev php7.0-soap && \
|
||||||
|
echo "extension=soap.so" >> /etc/php/7.0/cli/conf.d/40-soap.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Set Timezone
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG TZ=UTC
|
||||||
|
ENV TZ ${TZ}
|
||||||
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Composer:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Add the composer.json
|
||||||
|
COPY ./composer.json /home/laradock/.composer/composer.json
|
||||||
|
|
||||||
|
# Make sure that ~/.composer belongs to laradock
|
||||||
|
RUN chown -R laradock:laradock /home/laradock/.composer
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
# Check if global install need to be ran
|
||||||
|
ARG COMPOSER_GLOBAL_INSTALL=false
|
||||||
|
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
|
||||||
|
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
|
||||||
|
# run the install
|
||||||
|
composer global install \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
# Export composer vendor path
|
||||||
|
RUN echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Crontab
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
COPY ./crontab /etc/cron.d
|
||||||
|
RUN chmod -R 644 /etc/cron.d
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# User Aliases
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
USER laradock
|
||||||
|
COPY ./aliases.sh /home/laradock/aliases.sh
|
||||||
|
RUN echo "" >> ~/.bashrc && \
|
||||||
|
echo "# Load Custom Aliases" >> ~/.bashrc && \
|
||||||
|
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \
|
||||||
|
echo "" >> ~/.bashrc
|
||||||
|
|
||||||
|
USER root
|
||||||
|
RUN echo "" >> ~/.bashrc && \
|
||||||
|
echo "# Load Custom Aliases" >> ~/.bashrc && \
|
||||||
|
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \
|
||||||
|
echo "" >> ~/.bashrc
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# xDebug:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_XDEBUG=false
|
||||||
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||||
|
# Load the xdebug extension only with phpunit commands
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --force-yes php7.0-xdebug && \
|
||||||
|
sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \
|
||||||
|
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
# ADD for REMOTE debugging
|
||||||
|
COPY ./xdebug.ini /etc/php/7.0/cli/conf.d/xdebug.ini
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# ssh:
|
||||||
|
#####################################
|
||||||
|
ARG INSTALL_WORKSPACE_SSH=false
|
||||||
|
ENV INSTALL_WORKSPACE_SSH ${INSTALL_WORKSPACE_SSH}
|
||||||
|
|
||||||
|
ADD insecure_id_rsa /tmp/id_rsa
|
||||||
|
ADD insecure_id_rsa.pub /tmp/id_rsa.pub
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_WORKSPACE_SSH} = true ]; then \
|
||||||
|
rm -f /etc/service/sshd/down && \
|
||||||
|
cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys \
|
||||||
|
&& cat /tmp/id_rsa.pub >> /root/.ssh/id_rsa.pub \
|
||||||
|
&& cat /tmp/id_rsa >> /root/.ssh/id_rsa \
|
||||||
|
&& rm -f /tmp/id_rsa* \
|
||||||
|
&& chmod 644 /root/.ssh/authorized_keys /root/.ssh/id_rsa.pub \
|
||||||
|
&& chmod 400 /root/.ssh/id_rsa \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# MongoDB:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Check if Mongo needs to be installed
|
||||||
|
ARG INSTALL_MONGO=false
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extension
|
||||||
|
pecl install mongodb && \
|
||||||
|
echo "extension=mongodb.so" >> /etc/php/7.0/cli/conf.d/30-mongodb.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Drush:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
ENV DRUSH_VERSION 8.1.2
|
||||||
|
ARG INSTALL_DRUSH=false
|
||||||
|
ENV INSTALL_DRUSH ${INSTALL_DRUSH}
|
||||||
|
RUN if [ ${INSTALL_DRUSH} = true ]; then \
|
||||||
|
# Install Drush 8 with the phar file.
|
||||||
|
curl -fsSL -o /usr/local/bin/drush https://github.com/drush-ops/drush/releases/download/$DRUSH_VERSION/drush.phar | bash && \
|
||||||
|
chmod +x /usr/local/bin/drush && \
|
||||||
|
drush core-status \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Node / NVM:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Check if NVM needs to be installed
|
||||||
|
ARG NODE_VERSION=stable
|
||||||
|
ENV NODE_VERSION ${NODE_VERSION}
|
||||||
|
ARG INSTALL_NODE=false
|
||||||
|
ENV INSTALL_NODE ${INSTALL_NODE}
|
||||||
|
ENV NVM_DIR /home/laradock/.nvm
|
||||||
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
# Install nvm (A Node Version Manager)
|
||||||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash && \
|
||||||
|
. $NVM_DIR/nvm.sh && \
|
||||||
|
nvm install ${NODE_VERSION} && \
|
||||||
|
nvm use ${NODE_VERSION} && \
|
||||||
|
nvm alias ${NODE_VERSION} && \
|
||||||
|
npm install -g gulp bower vue-cli \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
# Wouldn't execute when added to the RUN statement in the above block
|
||||||
|
# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell
|
||||||
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \
|
||||||
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
# Add NVM binaries to root's .bashrc
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export NVM_DIR="/home/laradock/.nvm"' >> ~/.bashrc && \
|
||||||
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# YARN:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
ARG INSTALL_YARN=false
|
||||||
|
ENV INSTALL_YARN ${INSTALL_YARN}
|
||||||
|
ARG YARN_VERSION=latest
|
||||||
|
ENV YARN_VERSION ${YARN_VERSION}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_YARN} = true ]; then \
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \
|
||||||
|
if [ ${YARN_VERSION} = "latest" ]; then \
|
||||||
|
curl -o- -L https://yarnpkg.com/install.sh | bash; \
|
||||||
|
else \
|
||||||
|
curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version ${YARN_VERSION}; \
|
||||||
|
fi && \
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
# Add YARN binaries to root's .bashrc
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_YARN} = true ]; then \
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export YARN_DIR="/home/laradock/.yarn"' >> ~/.bashrc && \
|
||||||
|
echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# PHP Aerospike:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ARG INSTALL_AEROSPIKE_EXTENSION=true
|
||||||
|
ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION}
|
||||||
|
|
||||||
|
# Copy aerospike configration for remote debugging
|
||||||
|
COPY ./aerospike.ini /etc/php/7.0/cli/conf.d/aerospike.ini
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \
|
||||||
|
# Install the php aerospike extension
|
||||||
|
curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/luciano-jr/aerospike-client-php/archive/master.tar.gz" \
|
||||||
|
&& mkdir -p aerospike-client-php \
|
||||||
|
&& tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \
|
||||||
|
&& ( \
|
||||||
|
cd aerospike-client-php/src/aerospike \
|
||||||
|
&& phpize \
|
||||||
|
&& ./build.sh \
|
||||||
|
&& make install \
|
||||||
|
) \
|
||||||
|
&& rm /tmp/aerospike-client-php.tar.gz \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = false ]; then \
|
||||||
|
rm /etc/php/7.0/cli/conf.d/aerospike.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# PHP V8JS:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ARG INSTALL_V8JS_EXTENSION=false
|
||||||
|
ENV INSTALL_V8JS_EXTENSION ${INSTALL_V8JS_EXTENSION}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_V8JS_EXTENSION} = true ]; then \
|
||||||
|
# Install the php V8JS extension
|
||||||
|
add-apt-repository -y ppa:pinepain/libv8-5.4 \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y php-dev php-pear libv8-5.4 \
|
||||||
|
&& pecl install v8js \
|
||||||
|
&& echo "extension=v8js.so" >> /etc/php/7.0/cli/php.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Non-root user : PHPUnit path
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# add ./vendor/bin to non-root user's bashrc (needed for phpunit)
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
RUN echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export PATH="/var/www/vendor/bin:$PATH"' >> ~/.bashrc
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Laravel Artisan Alias
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN echo "" >> ~/.bashrc && \
|
||||||
|
echo 'alias art="php artisan"' >> ~/.bashrc
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Laravel Envoy:
|
||||||
|
#####################################
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
ARG INSTALL_LARAVEL_ENVOY=true
|
||||||
|
ENV INSTALL_LARAVEL_ENVOY ${INSTALL_LARAVEL_ENVOY}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \
|
||||||
|
# Install the Laravel Envoy
|
||||||
|
composer global require "laravel/envoy=~1.0" \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Deployer:
|
||||||
|
#####################################
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
ARG INSTALL_DEPLOYER=false
|
||||||
|
ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_DEPLOYER} = true ]; then \
|
||||||
|
# Install the Deployer
|
||||||
|
composer global require "deployer/deployer" \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Linuxbrew:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ARG INSTALL_LINUXBREW=true
|
||||||
|
ENV INSTALL_LINUXBREW ${INSTALL_LINUXBREW}
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_LINUXBREW} = true ]; then \
|
||||||
|
|
||||||
|
# Preparation
|
||||||
|
apt-get update && \
|
||||||
|
apt-get upgrade -y && \
|
||||||
|
apt-get install -y build-essential make cmake scons curl git \
|
||||||
|
ruby autoconf automake autoconf-archive \
|
||||||
|
gettext libtool flex bison \
|
||||||
|
libbz2-dev libcurl4-openssl-dev \
|
||||||
|
libexpat-dev libncurses-dev && \
|
||||||
|
|
||||||
|
# Install the Linuxbrew
|
||||||
|
git clone https://github.com/Homebrew/linuxbrew.git ~/.linuxbrew && \
|
||||||
|
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export PKG_CONFIG_PATH"=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \
|
||||||
|
|
||||||
|
# Setup linuxbrew
|
||||||
|
echo 'export LINUXBREWHOME="$HOME/.linuxbrew"' >> ~/.bashrc && \
|
||||||
|
echo 'export PATH="$LINUXBREWHOME/bin:$PATH"' >> ~/.bashrc && \
|
||||||
|
echo 'export MANPATH="$LINUXBREWHOME/man:$MANPATH"' >> ~/.bashrc && \
|
||||||
|
echo 'export PKG_CONFIG_PATH="$LINUXBREWHOME/lib64/pkgconfig:$LINUXBREWHOME/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \
|
||||||
|
echo 'export LD_LIBRARY_PATH="$LINUXBREWHOME/lib64:$LINUXBREWHOME/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Minio:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
ARG INSTALL_MC=false
|
||||||
|
ENV INSTALL_MC ${INSTALL_MC}
|
||||||
|
|
||||||
|
COPY mc/config.json /root/.mc/config.json
|
||||||
|
|
||||||
|
RUN if [ ${INSTALL_MC} = true ]; then\
|
||||||
|
curl -fsSL -o /usr/local/bin/mc https://dl.minio.io/client/mc/release/linux-amd64/mc && \
|
||||||
|
chmod +x /usr/local/bin/mc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Symfony:
|
||||||
|
#####################################
|
||||||
|
USER root
|
||||||
|
ARG INSTALL_SYMFONY=false
|
||||||
|
ENV INSTALL_SYMFONY ${INSTALL_SYMFONY}
|
||||||
|
RUN if [ ${INSTALL_SYMFONY} = true ]; then \
|
||||||
|
|
||||||
|
mkdir -p /usr/local/bin \
|
||||||
|
&& curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony \
|
||||||
|
&& chmod a+x /usr/local/bin/symfony \
|
||||||
|
|
||||||
|
# Symfony 3 alias
|
||||||
|
&& echo 'alias dev="php bin/console -e=dev"' >> ~/.bashrc \
|
||||||
|
&& echo 'alias prod="php bin/console -e=prod"' >> ~/.bashrc \
|
||||||
|
|
||||||
|
# Symfony 2 alias
|
||||||
|
# && echo 'alias dev="php app/console -e=dev"' >> ~/.bashrc \
|
||||||
|
# && echo 'alias prod="php app/console -e=prod"' >> ~/.bashrc \
|
||||||
|
|
||||||
|
;fi
|
||||||
|
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Final Touch
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
USER root
|
||||||
|
RUN apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Set default work directory
|
||||||
|
WORKDIR /var/www
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
FROM laradock/workspace:1.3 # placeholder. Need change after new image would be built.
|
FROM laradock/workspace:1.3 # placeholder. Need change after new image would be built.
|
||||||
|
|
||||||
MAINTAINER MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user