Dockerfile
根目錄下沒有Dockerfile的可以復(fù)制下面的命令
# 使用基礎(chǔ)鏡像
FROM leekay0218/crmeb-mer
## 復(fù)制代碼
## 在本地調(diào)試注釋掉,使用映射把文件映射進(jìn)去
#ADD ./ /var/www
# 設(shè)置工作目錄
WORKDIR /var/www
# 設(shè)置時(shí)區(qū)為上海
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone && \
echo '[PHP]\ndate.timezone = "'$TZ'"\n' > /usr/local/etc/php/conf.d/tzone.ini
# 創(chuàng)建 mer_s.conf 配置文件
RUN echo "[program:mer_s]" > /etc/supervisor/conf.d/mer_s.conf && \
echo "command=php think swoole restart" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "directory=/var/www/" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "autorestart=true" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "startsecs=3" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "startretries=3" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "stdout_logfile=/var/log/supervisor/mer_s.out.log" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "stderr_logfile=/var/log/supervisor/mer_s.err.log" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "stdout_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "stderr_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "user=root" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "priority=999" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "numprocs=1" >> /etc/supervisor/conf.d/mer_s.conf && \
echo "process_name=%(program_name)s_%(process_num)02d" >> /etc/supervisor/conf.d/mer_s.conf
# 創(chuàng)建 mer_q.conf 配置文件
RUN echo "[program:mer_q]" > /etc/supervisor/conf.d/mer_q.conf && \
echo "command=php think queue:work --tries 2" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "directory=/var/www/" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "autorestart=true" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "startsecs=3" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "startretries=3" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "stdout_logfile=/var/log/supervisor/mer_q.out.log" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "stderr_logfile=/var/log/supervisor/mer_q.err.log" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "stdout_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "stderr_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "user=root" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "priority=999" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "numprocs=1" >> /etc/supervisor/conf.d/mer_q.conf && \
echo "process_name=%(program_name)s_%(process_num)02d" >> /etc/supervisor/conf.d/mer_q.conf
# 設(shè)置入口命令
ENTRYPOINT ["/entrypoint.sh"]
# 創(chuàng)建日志文件
RUN touch /var/www/service.err.log /var/www/service.out.log
Docker鏡像加速器
點(diǎn)擊鏈接使用支付寶登錄后就能看到加速器地址和操作方法
https://cr.console.aliyun.com/cn-beijing/instances/mirrors
制作SWOOLE運(yùn)行鏡像
1. 進(jìn)入到項(xiàng)目根目錄看到Dockerfile文件后在當(dāng)前目錄打開命令行
執(zhí)行命令,后面的點(diǎn),一定不能缺少;創(chuàng)建一個(gè)叫:pro的鏡像
鏡像內(nèi)php版本為7.4版本
docker build -t mer_test .
2. 運(yùn)行鏡像
docker run --name mer_test_con -itd -p 8324:8324 -v D:\crmeb\crmeb_merchant:/var/www mer_test
解釋:
-v D:\crmeb\crmeb_merchant:/var/www 把本地D:\crmeb\crmeb_merchant下的文件映射到容器中的/var/www目錄中這樣就改了本地的文件容器內(nèi)的就自動(dòng)變
—name 容器名稱
-p 20199:20199 映射端口
最后的參數(shù):mer_test是鏡像的名稱
3. 進(jìn)入容器查看
mer_test_con是上一步給容器設(shè)置的名稱,其他都是固定格式
docker exec -it mer_test_con /bin/bash
# 查看supervisor管理里啟動(dòng)的程序
supervisorctl status
下面這樣就是啟動(dòng)正常,如果mer_q(隊(duì)列沒有啟動(dòng)),檢查一下redis是否連接正常
4 supervisor簡單使用
序號 | 命令信息 | 作用說明 |
---|---|---|
1 | supervisorctl status | 產(chǎn)看所有進(jìn)程狀態(tài) |
2 | supervisorctl stop [name] | 停止[name]服務(wù) |
3 | supervisorctl start [name] | 啟動(dòng)[name]服務(wù) |
4 | supervisorctl restart [name] | 重啟[name]服務(wù) |
5 | supervisorctl update | 重新加載配置文件 |
6 | supervisorctl reload | 重啟配置中所有服務(wù) |
把name換成all可以管理配置中的所有進(jìn)程。
直接輸入supervisorctl進(jìn)入supervisorctl的shell交互界面,此時(shí)上面的命令不帶supervisorctl可直接使用。
# 啟動(dòng) supervisor
supervisord -c /etc/supervisor/supervisord.conf
5. 更多redis和mysql容器創(chuàng)建和使用
https://blog.csdn.net/yywCode/article/details/125537368?spm=1001.2014.3001.5502