想著加多站點配置,之前將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 down
、docker ps -a
、docker-compose up -d
, nginx一直是exit(1),好想哭啊
小白如我,伺服器上沒弄域名,多站點除了多埠以外我不知道還能怎麼弄了- -怎麼公用80埠啊?
好了晚安(月亮)
本作品採用《CC 協議》,轉載必須註明作者和本文連結