目的
# docker-compose up -d --build
我讨厌建筑环境
我想用这个来完成一切
这将是这些人的程序手册。
用什么
码头工人
容器型虚拟化软件。
它是一种可以隔离(容器化)数据和程序(Apache、MySQL、软件等)的机制。
版本:v20.10.17
码头工人撰写
用于定义和运行多个容器的 Docker 应用程序的工具。
您可以一次运行/停止/销毁所有容器。
版本:v2.6.1
码头工人桌面
它是一个方便的工具,可让您构建 Docker 容器等开发环境。
版本:v4.10.1
WSL2
您将能够从 Windows 操作 Linux 内核。
Docker 在 Linux 上运行,因此拥有它非常方便。
您将能够从 Windows 编辑器 vsCode 访问(编辑)Linux 上的文件。
它还提供比在传统 Hyper-V 上运行 Docker 更好的性能。
版本(Ubuntu):20.04 LTS
VS 代码
他是一位才华横溢的编辑。
建造什么
搭建环境如下。
在 WSL2 上运行 Docker 并构建一个容器。使用 VS Code 使该容器可访问。
文件夹结构
这次要构建的文件夹结构是这样的。
| 1 | 2 |
|---|---|
| 项目 | 项目根文件夹 |
| 背部 | 后端(Django)文件存储 |
| 代码 | 容器工作目录 |
| Dockerfile | Docker 定义文件 |
| .devcontainer.json | 容器连接的 VS Code 配置文件 |
| 要求.txt | Python包管理文件 |
| 正面 | 前端(React)文件存储 |
| Docker-compose.yml | Docker Compose 定义文件 |
文件创建
现在让我们创建一个 Dockerfile。
姜戈
首先,让我们创建后端。
- Dockerfile
我将省略对 Docker 命令的解释,但注释描述了每个语句的作用。
# ベースとなるDokcerイメージを指定する
FROM python:3
# コンソールのstdout(標準出力)と
# stderr(標準エラー出力)のバッファーを無効にする
ENV PYTHONUNBUFFERED 1
# ワークディレクトリを指定する。
WORKDIR /code
# ホストマシンにあるrequirements.txtをImage側のマシンへコピーする
COPY ./requirements.txt .
# pipコマンドを最新にし、
# requirements.txtファイル内のパッケージをインストールする
RUN pip install --upgrade pip && pip install -r ./requirements.txt
- requirements.txt
这一次,我们将安装一个客户端来操作 Django 和 MySQL。
另一方面,我也将黑色用于代码格式化。
django==3.2
mysqlclient
black
- .devcontainer.json
这里我们描述与 VS Code 连接的容器相关的设置。
也可以为 VS Code 本身预定义扩展和设置。
{
// コンテナに関する設定
"name": "handson-back",
"dockerComposeFile": [
"../docker-compose.yml"
],
"service": "handson-back",
"shutdownAction": "none",
"workspaceFolder": "/code",
// コンテナにつなげるVS Codeの拡張機能設定
"extensions": [
"ms-python.python",
"CoenraadS.bracket-pair-colorizer-2"
],
// コンテナにつなげるVS Codeの設定
"settings": {
"python.formatting.provider": "black",
"editor.defaultFormatter": null,
"editor.formatOnSave": true
}
}
反应
接下来我们将创建前端。
- Dockerfile
只有这个
FROM node:17-alpine
WORKDIR /code
- .devcontainer.json
这里我们描述与 VS Code 连接的容器相关的设置。
也可以为 VS Code 本身预定义扩展和设置。
{
// コンテナに関する設定
"name": "handson-front",
"dockerComposeFile": [
"../docker-compose.yml"
],
"service": "handson-front",
"shutdownAction": "none",
"workspaceFolder": "/code",
// コンテナにつなげるVS Codeの拡張機能設定
"extensions": [
"dsznajder.es7-react-js-snippets",
"esbenp.prettier-vscode",
"CoenraadS.bracket-pair-colorizer-2"
],
// コンテナにつなげるVS Codeの設定
"settings": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"prettier.singleQuote": false,
"prettier.jsxSingleQuote": false
}
}
码头工人撰写
最后创建一个 docker-compose.yml 文件。
我将省略如何编写 yml 文件,但我正在做的事情在评论中有所描述。
# Composeファイル形式
version: '3'
# Dockerの中にボリュームというデータを保持する領域を確保
volumes:
handson-db-data:
services:
# データベース(mysql)
handson-db:
image: mysql:8.0.23
container_name: my-db
# mysqlコンテナがデータを保管する場所とコンテナが保持する領域を紐づける
volumes:
- 'handson-db-data:/var/lib/mysql'
ports:
- '3308:3306'
environment:
# rootユーザーのパス(必須)
- 'MYSQL_ROOT_PASSWORD=root'
# 初期作成されるDB名(任意)
- 'MYSQL_DATABASE=my-db'
# 作成されるユーザー名(任意)
- 'MYSQL_USER=my-user'
# ユーザーのパス(任意)
- 'MYSQL_PASSWORD=my-user'
- 'TZ=Asia/Tokyo'
# バックエンド(django)
handson-back:
container_name: my-back
# docker build で指定するDockerfileの場所
build: ./back
# ポートの指定
ports:
- '8000:8000'
# ファイルシステムのマウント設定
volumes:
- './back/code:/code'
# バッシュを開くためのコマンド
tty: true
stdin_open: true
depends_on:
- handson-db
# フロントエンド(React)
handson-front:
container_name: my-front
# docker build で指定するDockerfileの場所
build: ./front
# ポートの指定
ports:
- '3000:3000'
# ファイルシステムのマウント設定
volumes:
- './front/code:/code'
# バッシュを開くためのコマンド
tty: true
stdin_open: true
启动容器
然后,当每个文件都准备好时,我们将实际创建容器。
在 docker-compose.yml 文件所在的层次结构中执行以下命令。
$ docker-compose up –d --build
构建完成后,您可以检查容器是否是从 Docker Desktop 创建的。
从 VS Code 连接到容器
安装扩展
首先安装远程开发扩展包连接容器。
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
连接到容器
安装扩展程序后,您将在屏幕左下角看到一个远程连接图标。
按图标并从屏幕顶部出现的菜单中选择“在容器中打开文件夹...”。
Explorer 将启动,因此选择后端 Dockerfile 所在的位置并打开它。
这次它将是一个名为“back”的文件夹。
如果连接成功,VS Code 左下方会显示连接目的地的容器名称。
此外,将打开设置为容器工作目录的“代码”文件夹。
如果您以相同的方式选择并打开一个名为“front”的文件夹,您将能够连接到前端容器。
至此,初步规划的开发环境搭建完成。
安装 Django 和 React 并检查开发服务器是否可以启动。
启动开发服务器
姜戈
在连接到后端容器的 VS Code 终端中执行以下命令。
# django-admin startproject mysite
创建 django 项目后,移动到“manage.py”所在的层次结构,并使用以下命令启动服务器。
# python manage.py runserver
最后,如果能确认打开本地地址的Django正在运行就OK了。
反应
在连接到前端容器的 VS Code 终端中使用相同的过程执行以下命令。
# yarn create react-app my-app
创建 React 应用程序后,移动到“package.json”所在的层次结构并使用以下命令启动服务器。
# yarn start
最后,如果你能确认打开本地地址的 React 正在运行就可以了。
概括
这是使用 Docker 和 WSL2 的开发环境的过程。
一旦定义了“Dockerfile”和“docker-compose.yml”,下次无论谁构建开发环境
# docker-compose up -d --build
你将能够做到。
我们希望您能感受到一点使用 Docker 的好处。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308624515.html