如何将我的网站部署为 Docker 容器
开发人员最大的噩梦之一就是“它在我的机器上无法运行”的问题。我曾经在不同的机器上本地运行我的网站时也遇到过困难。感谢Brittany Mitchell给了我将网站容器化的想法。容器化让我能够构建网站,并在不同的环境和机器上一致地运行它。Docker 正是实现这种容器化的工具。
什么是 Docker?
Docker 是一个用于开发、发布和运行应用程序的开源平台。它是一种技术,允许你将代码及其依赖项合并并存储到一个称为“镜像”的小巧软件包中。
Dockerfile、Docker 镜像和 Docker 容器
Dockerfile:
Dockerfile 是一个包含一系列命令或过程的文本文件。您可以将其视为一个脚本,它定义了如何构建容器镜像。
Docker 镜像:
Docker 镜像是应用程序或环境的打包可运行实例。它包含运行软件(或我们这里指网站)所需的一切,包括代码、运行时、库、环境变量和配置文件。Docker 镜像是用于创建容器的只读模板。
Docker容器:
Docker 容器是一个轻量级、独立、可执行的软件包,包含运行软件所需的一切。容器将应用程序彼此隔离,并与底层基础架构隔离,同时为应用程序提供额外的保护。容器化解决了与应用程序部署和可扩展性相关的问题。它有助于提高软件开发和运营的一致性和效率。
以下是我如何将我的网站容器化
作为先决条件,请确保您的计算机上本地安装了 Docker。安装 Docker Engine
我的网站代码托管在GitHub上。为了继续操作,请 fork 并克隆此仓库,然后通过运行以下命令将目录切换到该仓库:
git clone https://github.com/paschalogu/personal-website.git
cd personal-website
步骤 1:构建 Docker 镜像
- 添加 Dockerfile
我通过在网站目录的根目录中运行命令创建了一个名为Dockerfile的新文件touch Dockerfile
,并在 Dockerfile 中添加了以下代码行:
FROM nginx:alpine
COPY . /usr/share/nginx/html
EXPOSE 80
这FROM nginx:alpine
行代码告诉 Docker 使用 Alpine Linux 创建一个基于 Nginx Web 服务器的 Docker 镜像。该COPY . /usr/share/nginx/html
代码会将网站内容从我们所在的目录复制到正在构建的镜像中。这意味着我们的网站代码将替换默认的 Nginx Web 服务器内容。EXPOSE 80
该代码还指定容器应该能够在 80 端口上提供 HTTP 流量服务。
- 构建镜像
然后我通过运行下面的代码行来构建图像:
docker build -t personal-website:v1 .
docker build
该命令指示 Docker 根据上述 Dockerfile 中的说明将我们的网站构建为镜像。该命令-t personal-website:v1
指示 Docker 将镜像标记为 personal-website:v1。v1 表示这是版本 1。句点 (.) 指示 Docker 在当前目录中查找 Dockerfile,并在构建过程中使用此位置中的文件和目录。
运行该命令docker images
显示我刚刚构建的图像:
第 2 步:推送到 Docker 注册表
我登录了Docker Hub 容器镜像库并创建了一个新的仓库。我给它命名personal-website
并添加了一个简短的描述(描述是可选的)。
然后我运行docker push
下面的命令来推送我在上一步中构建的图像,但是它失败了,并出现下面的错误😞。
docker push paschalogu/personal-website:v1
The push refers to repository [[docker.io/paschalogu/personal-website](http://docker.io/paschalogu/personal-website)]
An image does not exist locally with the tag: paschalogu/personal-website
为什么失败了?推送命令正在寻找名为 paschalogu/personal-website:v1 的图像,但没有找到。
为了解决这个问题,我运行docker tag
命令来标记我的图像,然后重新运行docker push command
以推送到我的 docker 存储库。
docker tag personal-website:v1 paschalogu/personal-website:v1
docker push paschalogu/personal-website:v1
步骤3:测试配置
打开浏览器并导航到网站https://labs.play-with-docker.com/
选择“登录”,然后从下拉列表中选择“docker”。然后,我使用我的 Docker Hub 帐户登录,并点击“开始”按钮。
我点击了左侧边栏的“添加新实例”选项。几秒钟后,浏览器中打开了一个终端窗口。
在终端中,我启动了我刚刚推送的网站。
docker pull paschalogu/personal-website:v1
docker run -dp 80:80 paschalogu/personal-website:v1
你会把你的应用程序和网站以 Docker 容器的形式运行吗?请在评论区留言告诉我。欢迎在 LinkedIn 上联系我:https://www.linkedin.com/in/paschal-ogu/,也可以在 Twitter 上关注我: @Paschal_Ik
参考:
https://www.aquasec.com/cloud-native-academy/docker-container/
https://docs.docker.com/get-started/04_sharing_app/。
文章来源:https://dev.to/paschologu/how-i-deployed-my-website-as-a-container-3fje