From 75b73380dc9909835bbc6fc92d96ccfdf00b8209 Mon Sep 17 00:00:00 2001 From: wyx's linux Date: Fri, 11 Jan 2019 21:09:14 +0800 Subject: [PATCH] init --- docker-compose.yml | 90 +++++++++++++++++++++++++ docker/config/proxy/conf.d/default.conf | 31 +++++++++ docker/files/cgi/Dockerfile | 44 ++++++++++++ docker/files/cgi/docker-entrypoint.sh | 6 ++ docker/files/proxy/Dockerfile | 18 +++++ docker/files/proxy/docker-entrypoint.sh | 6 ++ www/index.php | 24 +++++++ 7 files changed, 219 insertions(+) create mode 100644 docker-compose.yml create mode 100644 docker/config/proxy/conf.d/default.conf create mode 100644 docker/files/cgi/Dockerfile create mode 100644 docker/files/cgi/docker-entrypoint.sh create mode 100644 docker/files/proxy/Dockerfile create mode 100644 docker/files/proxy/docker-entrypoint.sh create mode 100644 www/index.php diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..68f4be1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,90 @@ +version: '3' + +services: + cgi: + container_name: cgi + build: ./docker/files/cgi + tty: true + restart: always + expose: + - "9000" + volumes: + - ./www:/data/www + - ./docker/log/cgi:/var/log/php-fpm + depends_on: + - mysql + - redis + links: + - mysql:mysql + - redis:redis + proxy: + container_name: proxy + build: ./docker/files/proxy + tty: true + restart: always + ports: + - "80:80" + - "443:443" + volumes: + - ./www:/data/www + - ./docker/config/proxy/conf.d:/etc/nginx/conf.d + - ./docker/log/proxy:/var/log/nginx + depends_on: + - cgi + links: + - cgi + mysql: + container_name: mysql + image: daocloud.io/library/mysql:5.6 + restart: always + expose: + - "3306" + ports: + - "3306:3306" + volumes: + - ./docker/data/mysql:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=yii2 + redis: + container_name: redis + image: daocloud.io/library/redis + restart: always + expose: + - "6379" + ports: + - "6379:6379" + volumes: + - ./docker/data/redis:/data + command: redis-server --appendonly yes + phpmyadmin: + container_name: phpmyadmin + image: daocloud.io/daocloud/phpmyadmin + expose: + - '80' + ports: + - "8080:80" + environment: + - PMA_ARBITRARY=0 + - PMA_HOST=mysql + # 如果取消下面两行注释, phpmyadmin就不用输入用户名和密码, 可以直接登录 + # - PMA_USER=root + # - PMA_PASSWORD=root + depends_on: + - mysql + links: + - mysql:mysql + phpredisadmin: + container_name: phpredisadmin + image: erikdubbelboer/phpredisadmin + expose: + - '80' + ports: + - "8081:80" + environment: + - REDIS_1_HOST=redis + - REDIS_1_NAME=redis + depends_on: + - redis + links: + - redis:redis diff --git a/docker/config/proxy/conf.d/default.conf b/docker/config/proxy/conf.d/default.conf new file mode 100644 index 0000000..b2f3e70 --- /dev/null +++ b/docker/config/proxy/conf.d/default.conf @@ -0,0 +1,31 @@ +server { + + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + + server_name localhost; + root /data/www; + index index.php index.html index.htm; + + location / { + # Redirect everything that isn't a real file to index.php + try_files $uri $uri/ /index.php$is_args$args; + } + + # deny accessing php files for the /assets directory + location ~ ^/assets/.*\.php$ { + deny all; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_pass cgi:9000; + try_files $uri =404; + } + + location ~* /\. { + deny all; + } + +} \ No newline at end of file diff --git a/docker/files/cgi/Dockerfile b/docker/files/cgi/Dockerfile new file mode 100644 index 0000000..93f66c1 --- /dev/null +++ b/docker/files/cgi/Dockerfile @@ -0,0 +1,44 @@ +FROM centos:7.2.1511 + +RUN yum install -y epel-release &&\ + rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm + +RUN yum install -y --enablerepo=remi --enablerepo=remi-php72 \ + php \ + php-opcache \ + php-devel \ + php-mbstring \ + php-xml \ + php-zip \ + php-cli \ + php-fpm \ + php-mcrypt \ + php-mysql \ + php-pdo \ + php-curl \ + php-gd \ + php-mysqld \ + php-bcmath \ + php-redis \ + wget \ + gcc \ + gcc-c++ \ + make \ + unzip &&\ + mkdir /run/php-fpm/ &&\ + yum clean all + +RUN curl -sSL https://getcomposer.org/installer | php &&\ + mv composer.phar /usr/local/bin/composer &&\ + composer config -g repo.packagist composer https://packagist.phpcomposer.com &&\ + composer global require fxp/composer-asset-plugin v1.4.2 -vvv + +RUN sed -i 's/listen = 127.0.0.1:9000/listen = [::]:9000/p' /etc/php-fpm.d/www.conf &&\ + sed -i '/listen.allowed_clients = 127.0.0.1/d' /etc/php-fpm.d/www.conf + + +COPY docker-entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +CMD ["docker-entrypoint.sh"] diff --git a/docker/files/cgi/docker-entrypoint.sh b/docker/files/cgi/docker-entrypoint.sh new file mode 100644 index 0000000..6db6ee0 --- /dev/null +++ b/docker/files/cgi/docker-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# @auther + +echo "info: starting php-fpm.." +/usr/sbin/php-fpm -c /etc/php.ini -y /etc/php-fpm.conf +tail -f /dev/null \ No newline at end of file diff --git a/docker/files/proxy/Dockerfile b/docker/files/proxy/Dockerfile new file mode 100644 index 0000000..84f7136 --- /dev/null +++ b/docker/files/proxy/Dockerfile @@ -0,0 +1,18 @@ +FROM centos:7.2.1511 + +RUN yum install -y epel-release &&\ + rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm &&\ + yum install -y --enablerepo=remi wget gcc gcc-c++ make + +RUN wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm &&\ + rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm &&\ + yum -y install nginx &&\ + mkdir -p /data/www + +# COPY ./Yii2.conf /etc/nginx/conf.d/default.conf + +COPY docker-entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +CMD ["docker-entrypoint.sh"] \ No newline at end of file diff --git a/docker/files/proxy/docker-entrypoint.sh b/docker/files/proxy/docker-entrypoint.sh new file mode 100644 index 0000000..931162f --- /dev/null +++ b/docker/files/proxy/docker-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# @auther + +echo "info: nginx non-daemon startup" +nginx -c /etc/nginx/nginx.conf +tail -f /dev/null \ No newline at end of file diff --git a/www/index.php b/www/index.php new file mode 100644 index 0000000..7ab5788 --- /dev/null +++ b/www/index.php @@ -0,0 +1,24 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbh->exec('SET CHARACTER SET utf8'); + $dbh = null; +} catch(PDOException $e) { + print 'Error: ' . $e->getMessage() . '
'; + die(); +} +echo '

成功通过 PDO 连接到 MySQL 服务器

' . PHP_EOL; + + +$redis = new Redis(); +$result = $redis->connect('redis', 6379); +if ($result) { + echo '

成功通过 PHP 连接到 Redis

' . PHP_EOL; +} +// $redis->auth('123456'); +$redis->set('key1', 'val1'); +echo '

Set Redis: key1 = ' . $redis->get('key1') . '

' . PHP_EOL; + +phpinfo();