如何使用docker部署自己的项目?
前一阵公司有一个将项目部署到私有化本地的需求,我对服务器没什么研究,搭建起来很费力,所以用docker做了一系列项目私有化部署的镜像,现在写个博客记录一下学习和搭建的过程。
拿我现在的项目举例,分为前端(vue实现),后端(PHP laravel框架), OnlineJudge(在线判题) 以及数据层和缓存(mysql, redis)。思路就是首先为各个项目创建镜像上传到dockerhub,然后使用docker-compose 一键部署
Laravel项目创建镜像
- 进入项目目录,创建
dockerfile
文件, 内容如下
FROM php:7.4-fpm
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \
sed -i 's/security.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \
sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list
RUN sed -i 's/9000/\/run\/php\/php7.4-fpm.sock/' /usr/local/etc/php-fpm.d/zz-docker.conf
RUN mkdir /run/php \
&& touch /run/php/php7.4-fpm.sock \
&& chmod 777 /run/php/php7.4-fpm.sock \
&& chmod +s /run/php/php7.4-fpm.sock
#### 安装PHP扩展 ######################
RUN pecl install redis-5.1.1 && \
docker-php-ext-enable redis
RUN docker-php-ext-install pdo && \
docker-php-ext-install pdo_mysql && \
docker-php-ext-enable pdo pdo_mysql
#### 安装nginx和supervisor 扩展 ######################
RUN apt-get update -yqq && \
apt-get install -yqq \
nginx supervisor cron
RUN echo "* * * * * cd /var/www/kaoshi.web.server && php artisan schedule:run >> /dev/null 2>&1" >> /etc/crontab
#### 复制配置文件到镜像 ######################
COPY ./ /var/www/kaoshi.web.server/
COPY ./php-fpm/www.conf /usr/local/etc/php-fpm.d/
COPY ./sites/default /etc/nginx/sites-enabled/
COPY ./supervisor.conf /etc/supervisor/conf.d/
###### 修改laravel项目的各种配置 #########################
RUN chown -R www-data:www-data /var/www/kaoshi.web.server \
&& mv /var/www/kaoshi.web.server/.env.docker /var/www/kaoshi.web.server/.env
ENV MYSQL_HOST=127.0.0.1
ENV