iiir 项目 Windows部署

iiir 项目 Windows部署

准备docker

  • 基本环境

  • 配置镜像加速

见本人博客 Windows Docker Desktop 折腾之路 - jentreywang - 博客园

准备脚本和vscode-server安装包

容器的启动脚本 - 用于容器运行时启动服务

必须是Unix编码

start.sh

#!/bin/bash
echo "start iiir container ..."
/etc/init.d/ssh start
/bin/bash

尾部(line4)开启新的会话,防止容器执行完毕后自关闭

准备vscode-server安装包 - 用于VSCode 远程开发

当前的vscode发行版是

版本: 1.66.0 (user setup)
提交: e18005f0f1b33c29e81d732535d8c0e47cafb0b5
日期: 2022-03-30T05:50:14.623Z
Electron: 17.2.0
Chromium: 98.0.4758.109
Node.js: 16.13.0
V8: 9.8.177.11-electron.0
OS: Windows_NT x64 10.0.19043

下载地址的通式

RUN commit_id=e18005f0f1b33c29e81d732535d8c0e47cafb0b5 \
    && curl -sSL https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable -o 

人类能看懂的通式

commit_id = "e18005f0f1b33c29e81d732535d8c0e47cafb0b5";
url = "https://update.code.visualstudio.com/commit:" + \
      commit_id  + "/server-linux-x64/stable"

下载后保存为默认文件名 vscode-server-linux-x64.tar.gz

准备镜像

MySQL

$ docker pull mysql:5.7.32

Python* 编译路径(也可直接拉取)

$ docker pull python:3.8.10-slim-buster

dockerfile: dockerfile_py

FROM python:3.8.10-slim-buster
MAINTAINER jentreywang
LABEL version="1.2" \
    description="Development & production environment for iiir project web server. (Basic image including python:3.8.10-slim-buster, openssh-server, git, vscode-server) " \
    createDate="2022-04-06" \
    by="jentreywang "
RUN apt-get update \
    && apt-get install --no-install-recommends -y \
    make \
    build-essential \
    openssh-server \
    git \
    curl \
    wget \ 
    && apt-get autoremove -y \
    && update-ca-certificates \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && echo "root:密码" | chpasswd \
    && mkdir -p /home/iiir/tools \ 
    && mkdir -p /home/iiir/script
COPY vscode-server-linux-x64.tar.gz /home/iiir/tools
COPY start.sh /home/iiir/script
RUN commit_id=e18005f0f1b33c29e81d732535d8c0e47cafb0b5 \
    && mkdir -p ~/.vscode-server/bin/${commit_id} \
    && cd ~/.vscode-server/bin/${commit_id} \
    && gunzip -q -r /home/iiir/tools/vscode-server-linux-x64.tar.gz \
    && echo "PermitRootLogin yes"        >> /etc/ssh/sshd_config \
    && echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config \
    && ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
EXPOSE 22 80 8080 8081 8082 8083 8084 8085
ENTRYPOINT ["/home/iiir/script/start.sh"]

编译

$ docker build -f dockerfile_py -t iiir-server:1.2 .

Python* 拉取

  1. 登录阿里云Docker Registry
$ docker login --username=阿里云用户名 registry.cn-shanghai.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

  1. 从Registry中拉取镜像
$ docker pull registry.cn-shanghai.aliyuncs.com/amtc_docker_aliyun/iiir-amd64:[镜像版本号]
  1. 将镜像推送到Registry
$ docker login --username=阿里云用户名 registry.cn-shanghai.aliyuncs.com
$ docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/amtc_docker_aliyun/iiir-amd64:[镜像版本号]
$ docker push registry.cn-shanghai.aliyuncs.com/amtc_docker_aliyun/iiir-amd64:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

  1. 选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-shanghai.aliyuncs.com 作为Registry的域名登录。

  1. 示例

使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ docker images

使用 "docker push" 命令将该镜像推送至远程。

$ docker push registry-vpc.cn-shanghai.aliyuncs.com/acs/agent:0.7-dfb6816

nginx

$ docker pull nginx:1.20.2

nginx - vue

docker pull registry.cn-shanghai.aliyuncs.com/amtc_docker_aliyun/iiir-nginx-vue:1.0

准备docker net

$ docker network create --driver bridge --subnet 192.168.4.0/24 --gateway 192.168.4.1 mynet

mynet是网络名,可自定义

运行容器

Python

iiir(本项目先创建mynet)

$ docker run -itd -h iiir-server --restart=always -p 11122:22 -p 11180:80 -p 18080:8080 -p 18081:8081 -p 18082:8082 -p 18083:8083 -p 18084:8084 -p 18085:8085 --name iiir --net docker网络名 镜像名:版本号 /bin/bash

nginx

nginx - vue


VSCode SSH 连接事项

所需插件

  • Remote - SSH

  • Remote - SSH: Editing Configuration Files

  • Remote Development

配置Host

处于 ~/.ssh/config

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host                 # 可自定义的名称,不可使用特殊符号,如冒号
    HostName 1.0.0.1 # IP地址
    User root        # host登录用户名
    Port 22          # host的开放端口

如果连接失败

删除 ~/.ssh/config下的 known_hosts文件,重新建立连接即可

放入工程* (记录用)

这里优先考虑无git的情况

准备工具:7z

无git的步骤

  1. 送入工程压缩文档

    1. 获得项目工程(.zip 为例)

    2. 解压

    3. 压缩为 .tar

    4. 压缩为 .gz

    5. 送入容器

  2. 安装Python依赖

    1. 容器内进入工程目录,定位到 requirements.txt

    2. pip3 install -r requirements.txt

  3. 检测MySQL

    1. 定位到 databaseCheck.py

    2. python ./databaseCheck.py

  4. 创建SQL表

    1. 定位到 manage.py 目录 (Django)工程

    2. python3 manage.py makemigrations

    3. python3 manage.py migrate

解压命令

tar -zxvf filename.tar.gz

有git的步骤

  1. 配置全局git

    1. git config --global user.name "用户名"

    2. git config --global user.email "邮箱"

  2. 克隆工程

    1. git clone 你的工程地址如https://gitee.com/helloword/helloworld.git -b 你的分支
  3. 安装Python依赖

    1. 容器内进入工程目录,定位到 requirements.txt

    2. pip3 install -r requirements.txt

  4. 检测MySQL

    1. 定位到 databaseCheck.py

    2. python ./databaseCheck.py

  5. 创建SQL表

    1. 定位到 manage.py 目录 (Django)工程

    2. python3 manage.py makemigrations

    3. python3 manage.py migrate

posted @ 2022-04-06 19:19  jentreywang  阅读(188)  评论(0编辑  收藏  举报