首先在Ubuntu上安装Docker
你可以选择像Bluemix这样的Docker提供商,或者从softlayer或其他任何提供商获取虚拟机。在我的情况下,我选择了一个虚拟服务器,所以我必须在Ubuntu LTS上安装Docker。这非常容易。基本上,您只需将新的存储库条目添加到apt源中,并安装最新的稳定版Docker软件包即可。get.docker.com上也有一个脚本可用,但我不太舒服直接从网络上以root访问权限执行shell脚本。但这取决于你。
wget -qO- https://get.docker.com/ | sh
在Linux上安装的Docker与例如Mac上的Docker安装相比,不包含docker-compose。安装Docker Compose非常简单。可以从GitHub下载Docker Compose脚本,链接在这里:https://github.com/docker/compose/releases。
Docker Compose
Docker Compose负责管理包含多个Docker容器的Docker设置,包括网络和基本监控。以下脚本启动并构建所有带有nginx、mysql和wordpress的Docker容器。它还将主机文件系统上的卷导出以便进行轻松备份和持久性,并监视Docker容器是否正在运行。
version: '3'
services:
db:
image: mysql:latest
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: easytoguess
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: eveneasier
wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
volumes:
- ./wordpress:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: eveneasier
WORDPRESS_DB_NAME: wordpress
nginx:
depends_on:
- wordpress
restart: always
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- "80:80"
MySQL是我们使用环境变量为数据库提供用户名、密码和数据库名称的第一个容器。第7行负责将数据库文件保存在docker容器之外,这样您可以删除docker容器,启动一个新的容器,仍然可以运行相同的数据库。将其指向您想要的位置,在本例中是在同一目录下的“db”中。此外,请确保您使用合适的密码。
第二个容器是WordPress。同样,在第21行上使用主机文件夹。此外,请确保您已经配置了与mysql容器配置相同的用户、密码和数据库名称。
最后一个是Nginx作为面向互联网的容器。在这里,您公开端口80。虽然在其他两个容器中只需指定一个容器,但在这个容器中,您需要配置一个Dockerfile和一个构建上下文,以根据网络设置自定义您的nginx。如果您只想托管静态文件,可以通过卷挂载添加它们,但在我们的情况下,我们需要配置nginx本身,因此需要一个自定义的Dockerfile,如下所述。
Nginx设置的Dockerfile
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf
VOLUME /var/log/nginx/log/
EXPOSE 80
这个dockerfile继承了最新版的nginx,并将default.conf文件复制到其中。有关如何设置配置文件,请参见下一章节。
Nginx配置文件
server {
listen 80;
listen [::]:80;
server_name www.23-5.eu ansi.23-5.eu;
access_log /var/log/nginx/log/unsecure.access.log main;
location / {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
第2行和第3行配置我们要监听的端口。我们需要一个用于ip4,另一个用于ip6。重要的是第8到15行中的代理配置。第11行将所有调用重定向到“/”(因此URL中没有路径)到wordpress服务器。由于我们使用docker-compose来运行它,docker会通过内部DNS服务器使地址可用。第13至15行重写http头,以便将所有内容映射到不同的URL,否则我们将最终在docker中得到指向http://wordpress的自动生成链接。
启动系统
如果一切都配置好了,且docker-compose.yml、default.conf、Dockerfile-nginx和db文件夹和wordpress文件夹在同一个文件夹中,我们可以使用以下命令在该文件夹中启动所有服务:
docker-compose up --build -d
参数“-d”会在后台(守护进程)启动设置。对于第一次运行,建议不使用“-d”参数以查看所有调试消息。