我的服务器是ubuntu的
一、先安装docker
更新apt包索引:
sudo apt-get update
允许apt通过https使用repository安装软件包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加docker官方GPG KEY
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
验证Key的指纹
sudo apt-key fingerprint 0EBFCD88
添加稳定版repository
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
安装最新版本的docker ce和containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装指定版本的
查看可获取的版本 apt-cache madison docker-ce
sudo apt-get install docker-ce=VERSION_STRING docker-ce-cli=VERSION_STRING containerd.io
VERSION_STRING填写上面的版本就可以了,如下图所示
验证:docker --version
sudo docker run hello-world
以下版本号填写时,可以在
http://hub.docker.com
搜索你要拉取的镜像,查看版本号
二、安装mysql
docker pull mysql:版本号(不填也行)
##创建文件
mkdir ~/mysql
cd ~/mysql
##创建mysql
宿主机连接容器端口
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/DATA:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
PWD:相当于当前路径
三、安装nginx
docker pull nginx
docker run --name c_nginx -p 8081:80 -d nginx
然后docker ps去获取名称为c_nginx 的id
mkdir ~/nginx
cd ~/nginx
mkdir conf
mkdir ~/www/html
docker cp db90115d2209:/etc/nginx/nginx.conf ~/nginx/conf
上面 docker cp db90115d2209:/etc/nginx/nginx.conf /nginx/conf这步不用操作也可,直接复制下面的代码在/nginx/conf创建nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
cp后面的id填写获取的c_nginx的id
关闭上面创建的nginx容器
docker stop c_nginx
创建容器,映射端口,挂载
docker run -d -p 80:80 --name nginx-web -v ~/www/html:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
之后在~/www/html中创建index.html文件,即可访问
四、安装php
docker pull php:版本号
docker run --name c_php -v ~/www/html:/www -d php:7.2-fpm
mkdir ~/nginx/conf.d #创建保存nginx配置文件的目录
cd ~/nginx/conf.d
vim test.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
创建一个关联nginx,php的容器,映射端口号,并挂载
docker run --name php-nginx-web -p 80:80 -d \
-v ~/www/html:/usr/share/nginx/html:ro \
-v ~/nginx/conf.d:/etc/nginx/conf.d:ro \
--link c_php:php \
nginx
这里一定要停掉之前的映射到宿机的80端口的容器
四、安装redis
##安装redis
docker pull redis:版本号(不填最新版)
##创建容器,设置端口映射
docker run -id --name=名字 -p 6379:6379 redis:版本号
五、安装swoole扩展
进入php容器中
docker exec -it c_php /bin/bash
cd /usr/local/etc/php
cp php.ini-development php.ini
安装swoole
pecl install swoole
rm -rf /tmp/pear
编辑php.ini添加swoole扩展
echo "extension=swoole.so " >> /usr/local/etc/php/php.ini
重新打开一个命令行,重启容器
docker restart c_php
刷新就可以看见,安装成功
安装redis扩展``
docker exec -it c_php /bin/bash
pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
echo "extension=redis.so " >> /usr/local/etc/php/php.ini
以上信息参考了Michael·Ren的博客