首页 > 技术文章 > 在docker下面安装Nginx PHP mysql let's encrypt

redmondfan 2019-01-25 17:15 原文

最近自己在弄了个Nginx PHP Mysql Let's encrypt的docker,下面记录一下

1)先装 Let's encrypt

docker run --rm -p 80:80 -p 443:443 \
-v /etc/letsencrypt:/etc/letsencrypt \
quay.io/letsencrypt/letsencrypt auth \
--standalone -m myemail@domain.com --agree-tos \
-d domain.com

-m 和 -d 分别填上自己的电邮和域名

2)装上MySQL

docker run --name=mysql1 -p 3306:3306 -p 33060:33060 -d mysql/mysql-server:5.7

然后整理一下,先查出原始root的密码

docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis 
这是root的原始密码

然后登入进去改密码

docker exec -it mysql1 bash

mysql -u root -p'Axegh3kAJyDLaRuBemecis'

进去后改密码

mysql>use mysql;

mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');

#创建一个新用户

mysql>GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

 

再退出,此时,外面可以访问MYSQL了

 

3)装上nginx php

试过过官方的nginx的docker 镜像,装PHP时特麻烦,用apt-get install php后都不能启动php-fpm 于是放弃

试过用官方PHP的docker 镜像,如果纯PHP的docker容器启动不了,试过php-fpm的容器就装nginx后 nginx启动不了或者很麻烦

以上我用了另外一个

docker run --name my-apache-php-app -v /etc/letsencrypt:/etc/letsencrypt -d -p 12345:443 -p 9000:9000 richarvey/nginx-php-fpm:latest

这个镜像很方便,安装后去 /etc/nginx/sites-available 改一下default-ssl.conf,见到配置文件已经把let's encrypt写好,只要把里面的域名改一下就可以,改好后把它复制到sites-enabled

然后 /usr/local/etc/php,见到两份文件的,然后把php.ini-development  php.ini-production 其中一份复制成php.in 

最后把自己网站复制到 /var/www/html下面

4)最后把更新let's encrypt设为定时

$crontab -e

00 14 * * * docker run -it --rm -p 80:80 -p 443:443 -v /etc/letsencrypt:/etc/letsencrypt quay.io/letsencrypt/letsencrypt:latest renew --dry-run
05 14 * * * docker restart my-apache-php-app
05 14 * * * docker restart tomcat8

 

完成

推荐阅读