手把手教你docker部署(使用docker-compose)教程
在本文中我们将介绍如何使用Docker和Docker Compose部署应用程序。我们将以两个样例进行说明,它们是:使用Nginx反向代理部署Node.js Web应用程序和使用Docker Compose部署WordPress博客。
安装Docker和Docker Compose
在进行Docker部署之前,我们首先需要安装Docker和Docker Compose,这两个工具的安装过程可以参考Docker官方文档和Docker Compose官方文档。安装完毕后,可以使用以下命令检验安装结果:
$ docker --version
$ docker-compose --version
如果以上命令可以正常运行并输出版本信息,则说明Docker和Docker Compose安装成功。
使用Nginx反向代理部署Node.js Web应用程序
假设我们已经开发并测试好了一个Node.js Web应用程序,现在我们需要将其部署到生产环境。我们可以使用Nginx反向代理来完成这个任务。以下是完整的部署过程:
创建Dockerfile
我们需要编写一个Dockerfile文件来制作我们的Node.js镜像。首先,在项目根目录下创建一个名为Dockerfile的文件,写入以下内容:
FROM node:14
# 将应用程序文件复制到容器中,并设置工作目录
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# 启动应用程序
CMD ["npm", "start"]
这个Dockerfile文件首先从官方Node.js 14镜像中构建了一个新的镜像,并将其命名为“node-web”。然后,它复制了我们的应用程序文件到镜像中,并设置工作目录为“/app”。接着,它使用npm安装了所有依赖,并在最后启动了应用程序。
创建Docker Compose文件
接下来,我们需要创建一个名为docker-compose.yml的Docker Compose文件来定义我们的服务。在项目根目录下创建该文件,写入以下内容:
version: '3'
services:
app:
build: .
ports:
- '3000:3000'
nginx:
image: nginx
ports:
- '80:80'
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
这个Docker Compose文件定义了两个服务:
- “app”服务将使用我们上面创建的Dockerfile来制作Node.js镜像,并将应用程序暴露在主机的3000端口。
- “nginx”服务将使用官方Nginx镜像,并将Nginx暴露在主机的80端口。它还定义了一个卷,将我们自己的Nginx配置文件“nginx/nginx.conf”映射到容器中的“/etc/nginx/conf.d/default.conf”路径下。最后,它指定了“app”服务是其依赖项。
创建Nginx配置文件
接下来,我们需要为Nginx创建一个配置文件。我们在上面的Docker Compose文件中定义了这个文件路径为“nginx/nginx.conf”,现在我们需要在这个路径下创建该文件,并写入以下内容:
upstream app {
server app:3000;
}
server {
listen 80;
location / {
proxy_pass http://app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
这个Nginx配置文件会将所有HTTP请求代理到“app”服务上运行的Node.js应用程序。值得注意的是,在配置文件中我们使用了“app:3000”的主机名来代表我们的Node.js容器。这是因为我们在上面的Docker Compose文件中将“app”服务作为了一个服务定义,Docker会自动将其容器映射到名为“app”的DNS条目。
启动应用程序
好了,现在我们已经准备好启动我们的应用程序了。在终端中切换到项目根目录下,使用以下命令启动Docker Compose:
$ docker-compose up
这个命令会下载并构建我们的Node.js和Nginx镜像,并启动它们。最后,我们可以在浏览器中打开“http://localhost”访问我们的应用程序了。
停止应用程序
当我们需要停止并删除我们的应用程序容器时,可以在终端中按下“Ctrl+C”,然后使用以下命令:
$ docker-compose down
使用Docker Compose部署WordPress博客
接下来,我们将使用Docker Compose部署一个完整的WordPress博客应用程序。以下是完整的部署过程:
创建Docker Compose文件
我们需要创建一个名为docker-compose.yml的Docker Compose文件来定义我们的服务。在项目根目录下创建该文件,写入以下内容:
version: '3'
services:
db:
image: mysql:5.7
volumes:
- ./db/data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
这个Docker Compose文件定义了两个服务:
- “db”服务将使用官方MySQL 5.7镜像,并将数据库数据存储在“./db/data”文件夹中(我们需要在项目根目录下手动创建该文件夹)。它还定义了一些环境变量来设置MySQL的根密码、数据库、用户和密码。
- “wordpress”服务将使用官方WordPress镜像,并将WordPress暴露在主机的8000端口。它还定义了一些环境变量,用于设置WordPress连接到MySQL数据库的信息。
启动应用程序
现在我们已经准备好启动我们的应用程序了。在终端中切换到项目根目录下,并使用以下命令启动Docker Compose:
$ docker-compose up
这个命令会下载并构建我们的MySQL和WordPress镜像,并启动它们。最后,我们可以在浏览器中打开“http://localhost:8000”访问我们的WordPress博客了。
停止应用程序
当我们需要停止并删除我们的应用程序容器时,可以在终端中按下“Ctrl+C”,然后使用以下命令:
$ docker-compose down
以上就是使用Docker和Docker Compose部署应用程序的完整攻略。希望本文能帮助你顺利完成应用程序的部署工作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手把手教你docker部署(使用docker-compose)教程 - Python技术站