cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
echo { "registry-mirrors" : [ "https://dockerhub.timeweb.cloud" ] } > /etc/docker/daemon.json
systemctl reload docker
#
docker pull dockerhub.timeweb.cloud/library/alpine:latest
sudo apt-get remove docker-compose
# If installed via curl
sudo rm /usr/local/bin/docker-compose
# If installed via pip
pip uninstall docker-compose
# curl + grep
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')
# curl + jq
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
# Finally, download to your favorite $PATH-accessible location and set permissions:
DESTINATION=/usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION
https://composerize.com/
https://docs.docker.com/compose/compose-file/
ОФФ гайд по установке последнего докера
sudo apt install docker-compose
Hello world
cat <<EOT >.env
NODE_ENV=test
EOT
cat <<EOT > docker-compose.yml
version: '3'
services:
api:
image: 'alpine:latest'
env_file:
- .env
command: 'printenv'
EOT
docker-compose up
типичный сервис
https://github.com/PHPtoday-ru/docker-local-conf.git
mkdir images images/php www www/site1 hosts
cat <<EOT>docker-compose.yml
version: '2'
services:
nginx:
image: nginx:latest
ports:
- "8001:80"
- "443:443"
volumes:
- ./hosts:/etc/nginx/conf.d
- ./www:/var/www
- ./logs:/var/log/nginx
links:
- php
php:
build: ./images/php
links:
- mysql
volumes:
- ./www:/var/www
mysql:
image: mysql:8
ports:
- "13306:3306"
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
redis:
image: redis
command: ["sh", "-c", "exec redis-server --requirepass \"\${REDIS_PASSWORD}\""]
ports:
- "16379:6379"
EOT
cat <<EOT> images/php/Dockerfile
FROM php:7.1-fpm-jessie
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt mbstring mysqli pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
WORKDIR /var/www
CMD ["php-fpm"]
EOT
cat <<EOT> ./images/php/php.ini
display_errors = 1
EOT
cat <<EOT> hosts/site1.conf
server {
index index.php;
server_name site1;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/site1;
location ~ \.php$ {
try_files \$uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}
EOT
cat <<EOT> www/site1/index.php
<?php
phpinfo();
EOT
cat <<EOT> .env
REDIS_PASSWORD=eustatos
EOT
# build сервисов
docker-compose up
# alpine php
FROM alpine:latest
RUN apk add --no-cache php7 php7-fpm php7-amqp php7-mbstring php7-mysqli php7-pdo_mysql php7-zip php7-gd
RUN addgroup -S www-data && adduser -S www-data -G www-data
RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php7/php-fpm.conf \
&& sed -i -e "s/listen\s*=\s*127.0.0.1:9000/listen = [::]:9000/g" /etc/php7/php-fpm.d/www.conf \
&& sed -i -e "s/user\s*=\s*nobody/user = www-data/g" /etc/php7/php-fpm.d/www.conf \
&& sed -i -e "s/group\s*=\s*nobody/group = www-data/g" /etc/php7/php-fpm.d/www.conf \
&& sed -i -e "s/;clear_env\s*=\s*no/clear_env = no/g" /etc/php7/php-fpm.d/www.conf \
&& sed -i -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" /etc/php7/php-fpm.d/www.conf
ADD php.ini /etc/php7/conf.d/40-custom.ini
CMD ["php-fpm7"]