更新时间:2022-09-17 12:59:29
mydomain.com
写到/home/dokku/VHOST
。cat .ssh/id_rsa.pub| ssh root@mydomain.com sshcommand acl-add dokku myname
git clone git@github.com:heroku/node-js-sample.git cd node-js-sample git remote add dokku dokku@mydomain.com:test git push dokku master
Counting objects: 381, done. Delta compression using up to 4 threads. Compressing objects: 100% (308/308), done. Writing objects: 100% (381/381), 210.18 KiB | 0 bytes/s, done. Total 381 (delta 49), reused 373 (delta 44) -----> Cleaning up ... -----> Building test ... -----> Adding BUILD_ENV to build environment... -----> Node.js app detected -----> Requested node range: 0.10.x -----> Resolved node version: 0.10.35 -----> Downloading and installing node -----> Exporting config vars to environment -----> Installing dependencies ... -----> Running post-deploy -----> Creating new /home/dokku/test/VHOST... -----> Configuring test.mydomain.com... -----> Creating http nginx.conf -----> Running nginx-pre-reload Reloading nginx =====> Application deployed: http://test.mydomain.com
http://test.mydomain.com
!docker run --name mysql --restart=always \ -e MYSQL_ROOT_PASSWORD=some-secret-string -d mariadb
--restart=always
选项是用来保证Docker守护进程在容器出错或者重启后自动启动容器。apt-get install -qqy mysql-client mysql -h`docker inspect --format "{{ .NetworkSettings.IPAddress }}" mysql` \ -uroot -p
CREATE DATABASE myblog; CREATE USER 'myblog'@'%' IDENTIFIED BY 'another-password'; GRANT ALL ON myblog.* TO 'myblog'@'%'; FLUSH PRIVILEGES;
docker run --name myblog --link mysql:mysql \ -e WORDPRESS_DB_USER=myblog -e WORDPRESS_DB_PASSWORD=another-password \ -e WORDPRESS_DB_NAME=myblog -e VIRTUAL_HOST=blog.mydomain.com \ --restart=always -d wordpress
docker ps
来确认。然而,我们只能在服务器上直接访问80端口,VIRTUAL_HOST
的环境变量显示了我们真正想要访问的地址,但是这还不能用。cd /tmp wget https://github.com/jwilder/docker-gen/releases/download/0.3.6/docker-gen-linux-amd64-0.3.6.tar.gz tar xzf docker-gen-linux-amd64-0.3.6.tar.gz mv docker-gen /etc/nginx/docker-gen
/etc/nginx/docker.template
。现在,我们可以运行docker-gen,但是如果我们需要在服务器重启的时候自动执行此命令,那我们需要将docker-gen安装成一个service。要做到这一点,我们可以将以下脚本写到/etc/nginx/docker-gen-service
:#!/bin/bash /etc/nginx/docker-gen -only-exposed -watch -notify "service nginx reload" \ /etc/nginx/docker.template /etc/nginx/sites-enabled/docker_containers
chmod +x /etc/nginx/docker-gen-service
。现在我们需要添加upstart配置到/etc/init/docker-nginx.conf
:# docker-nginx - Nginx config generator for Docker containers description "Nginx config generator for Docker containers" author "Somebody <somebody@example.com>"
initctl start docker-nginx
。docker-gen会看着我们所有的Dockder容器,然后更新Nginx文件。它会检查每一个容器的VIRTUAL_HOST
环境变量,还记得我们在的启动WordPress容器的时候,我们指定了-e VIRTUAL_HOST=blog.mydomain.com
选项(如果你想将多个域名指向同一个容器,你可以用逗号分隔:VIRTUAL_HOST=blog.a.com,test.b.com
)。因而假设我们的DNS配置是正确的,我们现在可以访问http://blog.mydomain.com
,然后看到熟悉的WordPress的初始化配置界面。