小白折腾服务器(三):docker-compose+Dockerfile

想着加多站点配置,之前将docker-compose和deployer放在一起了,想了想docker配的是环境,deployer部署的是项目。嗯还是得分开写分开放。

然后加了Dockerfile去装php的扩展,

之前是5条命令+5个文件部署单站点。
这下是3条命令+7个文件部署多站点。
基本上不需要敲多的命令了,或者上服务器vim了

7个文件包括

  • 3个deployer文件,木有变
  • 2个nginx的站点配置文件
  • 1个docker-compose.yml文件
  • 1个Dockerfile文件(用来装php扩展)

比之前多1个nginx的配置文件和一个Dockerfile文件。

3条命令

其实scp命令应该都不算,其实就是自己偷懒- -

scp -r ~/Sites/aen233-dnmp  root@111.22.3.4:~  
docker-compose up -d
dep deploy

省略掉的两条命令,就是安装pdo_mysql扩展以及重启phpfpm容器。

docker-compose exec iu_phpfpm docker-php-ext-install pdo_mysql
docker-compose restart  iu_phpfpm

现在看好像差不太多,不过以后要是添加其它扩展,一条一条敲命令就不太愉快了- -
Dockerfile还是方便~~~~

新的docker-compose.yml

nginx多开了一个端口。
因为是配环境,前缀把项目名换掉了,之前是iu,下个项目叫pikachu~
aen233,是“阿嗯”233,23333333~~~~
nginx站点配置的链接目录改成/conf/conf.d了,是因为想着以后php和mysql的配置也需要放在conf目录下,统一查看和管理比较方便。
参考大大的dnmp,好像还写了rw,ro等权限,
还有networks我也没配,反正它会用默认的配置

version: '3'
services:
  aen233-mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    ports:
    - "3306:3306"
    volumes:
    - ./mysql:/var/lib/mysql
    container_name: aen233-mysql

  aen233-redis:
    image: redis:alpine
    ports:
    - "6379:6379"
    volumes:
    - ./redis:/data
    container_name: aen233-redis

  aen233-phpfpm:
    build: .
    ports:
    - "9000:9000"
    volumes:
    - /var/www/html:/var/www/html
    links:
    - aen233-mysql:mysql
    - aen233-redis:redis
    container_name: aen233-phpfpm

  aen233-nginx:
    image: nginx:alpine
    ports:
    - "80:80"
    - "8888:8888"
    volumes:
    - /var/www/html:/var/www/html
    - ./conf/conf.d:/etc/nginx/conf.d
    links:
    - aen233-phpfpm:phpfpm
    container_name: aen233-nginx

  aen233-adminer:
    image: adminer
    ports:
    - "8080:8080"
    links:
    - aen233-mysql:db
    container_name: aen233-adminer

新加的Dockerfile文件

Dockerfile和docker-compose.yml我在同级目录放着,
Dockerfile用的地方其实就是docker-compose.yml中php-fpm容器之前是image,现在换成build了。
build 后面的点其实是Dockerfile的路径,同级目录用点就可以了。
build其实还有context、args参数,不过我都没有用,就最基础的,先跑起来再说~
其实就两行,不过以后添加swoole扩展应该也是这里

FROM php:7.2-fpm

RUN docker-php-ext-install pdo_mysql

新的nginx站点配置文件

默认的default.conf中修改root要改两处,这里给提出来了,以后只在上面改一个root地址就好了
在docker-compose.yml同级新建目录conf/conf.d,两个站点配置文件都在这里,区别只是最上面的监听端口和根目录。
docker-compose.yml中nginx开放了两个端口80和8888,另一个站点的listen改成8888,再改个root就好了。

server {
    listen       80;
    server_name  localhost;
    root   /var/www/html/iu-deployer/current/public;
    index  index.php index.html index.htm;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location / {
       try_files $uri $uri/ /index.php?$query_string;
       if (!-e $request_filename){
           rewrite ^/(.*) /index.php last;
       }
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    # location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    # }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   phpfpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

不是强迫症患者,所以root用户也ok,不过下次应该试着换个用户组。
还有就是配置 Supervisor 来启动 Horizon。队列和定时任务- -
还有就是配githook,这样deployer就完全自动化部署了
swoole用的时候再装吧- -

都是最基础的用法,个人也比较喜欢简单粗暴- -
刚刚还在想deployer怎么可以只发布dev环境,翻前辈帖子就翻到了 dep deploy dev 愉快~~~~

记下坑,今天最大的坑来自phpstorm。refactor->rename文件夹时,它自动给全部替换了- -
nginx配置文件里 nginx全改成conf.d了我很晚才发现- -
一直docker-compose downdocker ps -adocker-compose up -d, nginx一直是exit(1),好想哭啊

小白如我,服务器上没弄域名,多站点除了多端口以外我不知道还能怎么弄了- -怎么公用80端口啊?

好了晚安(月亮)

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
php @ abc
文章
20
粉丝
94
喜欢
197
收藏
231
排名:107
访问:8.9 万
私信
所有博文
社区赞助商