最近自己在弄了个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
完成