我有一个 Azure Function 和一个 Azure 服务计划,它们都是使用以下 Terraform 代码创建的:
resource "azurerm_app_service_plan" "asp" {
name = "asp-${var.environment}"
resource_group_name = var.rg_name
location = var.location
kind = "FunctionApp"
reserved = true
sku {
tier = "ElasticPremium"
size = "EP1"
}
}
resource "azurerm_function_app" "function" {
name = "function-${var.environment}"
resource_group_name= var.rg_name
location= var.location
app_service_plan_id= azurerm_app_service_plan.asp.id
storage_connection_string=azurerm_storage_account.storage.primary_connection_string
os_type = "linux"
site_config {
linux_fx_version = "DOCKER|${data.azurerm_container_registry.acr.login_server}/${var.image_name}:latest"
}
identity {
type = "SystemAssigned"
}
app_settings = {
#Lots of variables, but irrelevant for this issue I assume?
} …Run Code Online (Sandbox Code Playgroud) 我有一个存储在变量中的大型 xml 文件。我想使用 pysftp 将它直接写入 ftp。我相信我需要使用 pysftp.putfo 并且这需要一个类似对象的文件。这是一个最小的例子:
from io import StringIO
from pysftp import Connection, CnOpts
cnopts = CnOpts()
cnopts.hostkeys = None
with Connection('localhost'
,username= 'admin'
,password = 'test'
,cnopts=cnopts
) as sftp:
sftp.putfo(StringIO('xml string'))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: Expected unicode or bytes, got None
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?是否有更简单更好的方法来实现我将字符串变量写入 ftp 上的文件的目标?
我有一个在 python:3.6-jessie 图像上运行的工作服务。我正在尝试减小它的大小以加速无服务器冷启动。
我试过图像 python:3.6-alpine、python:3.6-slim-buster 和 python:3.6-slim-jessie。
对于所有这些,我最终不得不安装许多额外的软件包,并且我最终遇到了以下错误,我无法用更多的软件包修复:
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我目前的 Dockerfile 是
FROM python:3.6-jessie as build
ENV PYTHONUNBUFFERED 0
ENV FLASK_APP "api/app.py"
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /opt/venv
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
FROM python:3.6-slim-jessie
COPY --from=build /opt/venv /opt/venv
WORKDIR /opt/venv
RUN apt-get update
RUN apt-get --assume-yes install gcc
RUN apt-get --assume-yes install python-mysqldb
ENV PATH="/opt/venv/bin:$PATH"
RUN rm -rf configs …Run Code Online (Sandbox Code Playgroud) 我们打算使用 Git Actions 在每次提交时构建 Docker。
这是我们当前的 Git Actions yml:
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
docker-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 …Run Code Online (Sandbox Code Playgroud) docker ×2
python ×2
azure ×1
dockerfile ×1
mysql ×1
pysftp ×1
python-3.x ×1
stringio ×1
terraform ×1