Restart policy option for run
command
read more: https://docs.docker.com/engine/reference/run/#restart-policies-restart
Simple container
docker run -it centos
docker run --name docker_daemon -d \
--restart=unless-stopped \
-v $(pwd):/scripts \
centos \
/scripts/service.sh
Cons: it doesn't work after restart.
####Show containers status
docker ps
####Show container logs
docker logs -f docker_daemon
####Stop and remove docker container
docker stop docker_daemon && docker rm docker_daemon
docker rm -f docker_daemon
Run mysql container with restart
docker run --name docker-mysql --restart=unless-stopped -v ./mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=drupal -d mysql
Call mysql commain inside container
docker exec -it docker-mysql mysql -uroot -proot
Alias for mysql container
alias dmysql="docker exec -it docker-mysql mysql -uroot -proot"
Use required tool or process inside container and receive result via mounted volumes.
Common way:
docker run --rm -v $(pwd):/mounted_dir tool-contaner [args]
Call phpcs from container
docker run --rm -v $(pwd):/work docker-phpcs-drupal custom_module
To call phpcbf you need rewrite entrypoint directive
docker run --rm -v $(pwd):/work --entrypoint=phpcbf docker-phpcs-drupal --standard=Drupal ./
Dockerfile content
# Parent container
FROM php:7.0-alpine
# Setup required packages
RUN curl -sS https://getcomposer.org/installer | php -- --filename=composer --install-dir=/usr/bin
RUN composer global require drupal/coder \
&& ln -s /root/.composer/vendor/squizlabs/php_codesniffer/scripts/phpcs /usr/bin/phpcs \
&& ln -s /root/.composer/vendor/drupal/coder/coder_sniffer/Drupal /root/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/Drupal
# Set environment directives
VOLUME /work
WORKDIR /work
ENTRYPOINT ["phpcs", "--standard=Drupal"]
docker build -t dcafe-image .
To make simple env we need to create two containers for php and db
docker run --name mysql --restart=unless-stopped -v $(pwd)/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=drupal -d mysql
docker run --name php -d -v $(pwd)/drupal:/srv -p 8000:80 --link mysql:mysql php:7.0-alpine php -t /srv -S 0.0.0.0:80
docker-compose.yml file
version: "2"
services:
web:
image: skilldlabs/php:7
ports:
- "8000:80"
volumes:
- ./drupal:/srv
links:
- mysql:mysql
depends_on:
- mysql
restart: always
mysql:
image: mysql
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_DATABASE: d8
MYSQL_USER: d8
MYSQL_PASSWORD: d8
MYSQL_ROOT_PASSWORD: d8root
restart: always
To run environment from docker-compose.yml file just call
cd path/to/docker-compose/file
docker-compose up
- docs.docker.com
- Get started tutorial
- Official docker registry
- 15 Docker Tips in 5 Minutes
- Docker Cheat Sheet
# Start simple php dev server
php -S localhost:8000
# Usefull aliases
alias allismine="sudo chown -R $(whoami):$(whoami) *"
alias docker-washup="docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)"