[phvia/dkc] 用docker-compose简洁快速构建PHP环境

 

dkc

用 docker-compose 加速构建PHP环境.

—– dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose

 

安装 docker

从 repository 安装

$ wget https://raw.githubusercontent.com/farwish/delicateShell/master/support/installDockerCE.sh && chmod +x installDockerCE.sh && ./installDockerCE.sh && rm -f installDockerCE.sh

https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository

 

或者下载 package 安装

https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-from-a-package

 

安装 docker-compose

$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

https://docs.docker.com/compose/install/#install-compose

 

几个平常可能使用的脚本

  • ./compose_remove_all_container.sh # 停止并移除docker-compose启动的容器
  • ./remove_none_name_images.sh # 移除名称为 (即没有名称)的镜像
  • ./start_all_container.sh # 使用 docker 命令逐个启动所有容器
  • ./stop_and_remove_all_container.sh # 使用 docker 命令逐个停止并删除所有容器

 

网站项目目录

默认您的网站项目代码放置于 web/,当然你可以修改 docker-compose.yml 中 volume 的映射关系,然后你可以放置在任何地方。

当然使用软链接也是可以的,把 web/ 链向实际项目目录。

 

指南

 

如何启动所有服务

修改 docker-composer.yml volume 配置项中 dkc/ 在你主机上的正确路径,然后启动所有:

docker-compose up --build [-d]

解决Redis的四个WARNING

1.no config file specified, using the default config.

默认已通过在 redis/Dockerfile 中使用配置文件 redis/redis.conf 解除了 WARNING,详细见子目录内 README,你可以修改 redis/redis.conf 的配置项满足你的需要。

 

2.The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

默认已通过在 docker-compose.yml 中配置 sysctls 的选项解除了 WARNING。

 

3.vm.overcommit_memory is set to 0!

需要你切换至 root,然后按如下设置:

$ echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
$ sysctl vm.overcommit_memory=1

4.you have Transparent Huge Pages (THP) support enabled in your kernel.

需要你切换至 root,然后按如下设置:

$ echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
$ source /etc/rc.local

如何运行Nginx静态站点

# 修改你的 web/ 目录位于主机内的绝对路径.

$ vi docker-compose.yml

- "/path/to/dkc/web:/usr/share/nginx/html"
# 启动 nginx 服务,及其常用操作

$ docker-compose up -d nginx
$
$ docker-compose stop nginx
$ docker-compose ps
$ docker-compose logs -f --tail 10 nginx
$ docker-compose exec nginx /bin/bash

现在可以在浏览器中访问: http://ip

 

PHP服务

关键之处在于 nginx 配置中要指明 PHP 后端服务的地址: fastcgi_pass php-address:9000;

而 php-address 是在 nginx 服务中配置的 –links 项。

默认在 nginx/conf.d/default.conf 中已经配置了PHP后端地址,并在 php/Dockerfile 中安装了常用扩展并支持访问数据库,如果需要请修改这些配置文件。

现在可以在浏览器中访问: http://ip/phpinfo.php

 

MySQL服务

# 启动 MySQL 服务,及其常用操作

$ docker-compose up -d mysql
$ docker logs mysql-con
$ docker-compose exec mysql bash  # equals to: docker exec -it mysql-con bash
$ mysql -uroot -p

 

使用自定义的 MySQL 配置文件,例如

The default configuration for MySQL can be found in /etc/mysql/my.cnf  
$ docker run --name mysql-con -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql-img-farwish:v1

 

把敏感配置值放在文件中,例如

docker run --name mysql-con -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql-img-farwish:v1

目前官方镜像只支持 MYSQL_ROOT_PASSWORD, MYSQL_ROOT_HOST, MYSQL_DATABASE, MYSQL_USER, and MYSQL_PASSWORD.

 

Dump 数据库到宿主机,例如

docker exec mysql-con sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /home/ubuntu/all-databases.sql

 

使用一个已存在的数据库

如果启动MySQL容器时带上一个包含数据库的目录,$MYSQL_ROOT_PASSWORD 变量不应该放在命令行中;在任何项目中都该忽略此变量,然后已存在的数据库不会以任何方式改变。

使用 COPY 还是 VOLUME

VOLUME 是支持热重载的,而 COPY 需要重新 build。

VOLUME 需要跟主机挂钩,而 COPY 直接拷贝到容器中。

移除所有未使用的 volume:docker volume prune

 

系列文章

http://www.cnblogs.com/farwish/tag/Docker/

 

项目:https://github.com/phvia/dkc

Link:https://www.cnblogs.com/farwish/p/9307671.html

 

posted on 2018-07-13 22:17 farwish 阅读() 评论() 编辑 收藏

版权声明:本文为farwish原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/farwish/p/9307671.html