; 创建自定义网络 micro 如果有多个容器实例
docker network create --subnet=172.18.0.0/16 micro
使用 MySQL
先手动建库(库名 pipe
,字符集使用 utf8mb4
,排序规则 utf8mb4_general_ci
),然后启动容器:
; mysql docker
docker run -dit -v /www/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /www/mysql/logs:/logs -v /www/mysql/data:/mysql_data \ -p 3306:3306 --net alpine-net -e MYSQL_ROOT_PASSWORD=123123 \ --name mysql mysql:5.7
获取最新镜像:
docker pull b3log/pipe
运行镜像
docker run -dit -p 5897:5897 --name pipe --network micro --ip 172.18.0.3 \ b3log/pipe --mysql="mysql_user:mysql_passwd@(172.18.0.1:3306)/pipe?charset=utf8mb4&parseTime=True&loc=Local" \ --runtime_mode=prod --server=http://server_ip:port
说明一下遇到的问题:p 5897 是宿主机和容器通信的端口,并非 blog 项目端口
go blog 项目端口 --server=http://server_ip:port
需要开通对应的云服务器 管理防火墙的端口 和 linux firewall 端口
例如 8811 是 web 访问端口,宿主机和容器是 5897,容器中的 blog 应该也是 8811 端口 因为--server 这个地址在访问后会 使用--server=http://server_ip:port 设置的域名/ip+port
upstream pipe{ # pipe blog #这个端口是服务器可通信端口 server 172.18.0.3:5897; } server { # 监听端口 listen 8811; server_name xxx.xxx.xxx.xxx; error_log /www/logs/blog.log; location / { proxy_pass http://pipe$request_uri; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; } }
; NGINX Docker
指定容器外部配置 指定配置文件,日志文件,servers,外部端口,连接,网络配置 名称等
docker run -dit -v /www/dockerconf/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /www/dockerconf/nginx/servers:/etc/nginx/servers \ -v /www:/www -p 80:80 -p 8811:8811 --link pipe \ --net micro --ip 172.18.0.5 --name nginx nginx:1.15
docker 安装 PHP
docker pull php:7.1-fpm docker run -dit -p 9000:9000 \ -v /www/dockerconf/php/php.ini:/usr/local/etc/php/php.ini \ -v /www:/www --link nginx \ -w /www/test \ --net micro --ip 172.18.0.2 \ --name php php:7.3-fpm 编辑对应的nginx server { listen 80; server_name algo.test.com; root /home/algorithm; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log error; location / { index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass 172.17.0.3:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 关于`fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name`这个配置,如果你想用`$document_root`变量,那就必须把nginx容器的数据目录与php容器的数据目录弄成一致的,比如我的nginx容器的数据目录是/home/algorithm,在php容器中依然是这个,如果php容器中的目录改变了,不是这个了,那么php容器就会找不到请求的这个文件的。 因为两个容器相当于两套文件系统,路径有可能是不一样的。但是呢,如果你偏要设置成不一样的,那么只能写死地址了,比如弄成这样:`fastcgi_param SCRIPT_FILENAME /home/algorithm/$fastcgi_script_name`,就可以让php容器访问到相应的文件了
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于