devcontainer/README.md
Michael RICOIS f52b52e738 Update docs
2018-03-27 15:06:32 +02:00

152 lines
3.5 KiB
Markdown

# EnvDev Dockerfiles
Web Developement Environment (Apache, PHP, MariaDB, ...)
# List
* HTTPd
* PHP-FPM
* MariaDB
* Redis
* MailCatcher
* MailDev
* PHP-Cli
# Docker Engine
## Install
Mac: https://docs.docker.com/docker-for-mac/install/
Windows: https://docs.docker.com/docker-for-windows/install/
Ubuntu: https://docs.docker.com/install/linux/docker-ce/ubuntu/
# Docker compose
https://github.com/docker/compose/releases
# Usage
Start with a docker-compose file (See sample).
We hope you have define a workspace path
Linux: ```/home/<user>/workspace```
Windows: ```C:\<user>\worspace```
Always go in `<workspace>/devcontainer` to execute docker-compose command.
Create a `.env` file and add configuration vars:
- DATA : where you store database, vhost, ...
- WORKSPACE : your workspace files
## Launch services (first time build)
```bash
docker-compose up -d
```
Delete service : `docker-compose rm <container_name>`
Prune all: `docker-compose down`
## Start and stop
```bash
docker-compose start
docker-compose stop
```
## Viewing log
```bash
docker-compose logs -f
docker-compose logs <container_name>
```
## View running container
`docker-compose ps`
## Update or Re-create base image
```bash
docker image rm <ID>
docker-compose build <container_name>
```
# Specific container usage
## PHP Cli
Work in your vhosts to execute some command in php
```bash
docker-compose exec -u fpm <container_name>
```
To avoid permissions problem
Update composer or an admin command
```bash
docker-compose exec <container_name>
```
## PHP-FPM & Apache vhosts
Create a VHOST file in `<DATA>/httpd/`. Add this to your vhost to connect php.
```
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:fcgi://fpm70:9000
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
```
Don't forget to create the directory in your workspace.
To enable the new vhosts, simply stop an start the `httpd` container (`docker-compose stop && docker-compose start`).
### Change php settings dynamically
In the root dir of your project, you could add a .user.ini wich change somme configuration (see file is read every five minutes)
Sample
```
upload_max_filesize=513M
post_max_size=513M
memory_limit=128M
mbstring.func_overload=0
always_populate_raw_post_data=-1
default_charset='UTF-8'
date.timezone='Europe/Paris'
display_errors=off
env[APPLICATION_ENV] = "development"
soap.wsdl_cache_enabled=0
```
## Database
Database files are store in `<DATA>/`.
Even if you delete your container, all data are preserved.
Read the doc official MariaDB: `https://hub.docker.com/_/mariadb/`
# Additional
## Ip Address
See all ip addresses in one command
```bash
docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
```
## ctop
Get ctop on [github](https://github.com/bcicen/ctop)
```bash
sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.1/ctop-0.7.1-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop
```