vagrant+docker一键搭建php+mysql开发环境
必备软件
- Vagrant
- Virtual Box
启动脚本
- Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.network "forwarded_port", guest: 3306, host: 3306
config.vm.network "private_network", ip: "10.0.0.2"
config.vm.provision "shell", inline: <<-SHELL
# 更换aliyun软件源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse' >> /etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list
apt-get update
# 安装docker
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y update
apt-get -y install docker-ce docker-compose
# 使用aliyun加速docker镜像
mkdir -p /etc/docker
echo '{' > /etc/docker/daemon.json
echo ' "registry-mirrors": ["https://kag9wqej.mirror.aliyuncs.com"]' >> /etc/docker/daemon.json
echo '}' >> /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
usermod -G docker vagrant
cd /vagrant
docker-compose up -d
# 开机自启动
echo '#!/bin/bash' > /etc/rc.local
echo 'sleep 10' >> /etc/rc.local
echo 'cd /vagrant' >> /etc/rc.local
echo 'docker-compose up -d' >> /etc/rc.local
echo 'exit 0' >> /etc/rc.local
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
SHELL
end
- docker-compose.yml
version: '2'
services:
mysql:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- "./mysql:/var/lib/mysql"
ports:
- '3306:3306'
networks:
- bridge
www:
build: .
volumes:
- "./wwwroot/www:/app"
- "./wwwroot/static/Uploads:/app/Uploads"
environment:
- VIRTUAL_HOST="你要绑定的域名"
- PHP_DB_HOST=mysql
- PHP_DB_NAME=你的数据库名称
- PHP_DB_USER=root
- PHP_DB_PASSWORD=root
networks:
- bridge
lb:
image: 'dockercloud/haproxy'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
links:
- www
ports:
- '80:80'
networks:
- bridge
networks:
bridge:
- Dockerfile
FROM php:5.6-apache
# 安装扩展
COPY ./soft/*.tgz /soft/
WORKDIR /soft
RUN pecl install redis-3.1.6.tgz \
&& pecl install xdebug-2.5.5.tgz \
&& docker-php-ext-enable redis xdebug \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& rm -rf /soft
# URL重写
RUN a2enmod rewrite
# 安装composer
ADD ./soft/composer.phar /usr/local/bin/composer
RUN chmod 755 /usr/local/bin/composer \
&& composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 安装代码
COPY ./wwwroot /app/
# 修改网站主目录
ENV APACHE_DOCUMENT_ROOT /app
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
# 可写权限
RUN chmod -R 777 /app/
# 默认工作目录
WORKDIR /app
# 暴露工作端口
EXPOSE 80 443 22

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续努力!