# 建立版本库

- build docker 20240603-2
This commit is contained in:
yshtcn
2024-06-03 21:22:07 +08:00
commit 8c18a6fd4b
4 changed files with 108 additions and 0 deletions

19
Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
# 使用官方的 Python 3.11 镜像作为基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制当前目录中的内容到工作目录
COPY . /app
# 安装Flask
RUN pip install flask
# 暴露容器的80端口
EXPOSE 80
# 运行Flask应用
CMD ["python", "app.py"]

14
app.py Normal file
View File

@@ -0,0 +1,14 @@
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def get_ip():
if request.headers.getlist("X-Forwarded-For"):
user_ip = request.headers.getlist("X-Forwarded-For")[0]
else:
user_ip = request.remote_addr
return user_ip
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)

View File

@@ -0,0 +1,74 @@
# Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Թ<EFBFBD><D4B9><EFBFBD>ԱȨ<D4B1><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԱȨ<D4B1><C8A8>
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
# <20><><EFBFBD>ĵ<EFBFBD><C4B5>ű<EFBFBD><C5B1><EFBFBD>Ŀ¼
Set-Location $PSScriptRoot
Write-Host "<EFBFBD><EFBFBD>ǰĿ¼<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼: $PSScriptRoot"
# <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><CAB1>
$dateTime = Get-Date -Format "yyyyMMdd"
Write-Host "<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: $dateTime"
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ
$revision = Read-Host -Prompt "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD> ($dateTime,<2C><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>û<EFBFBD>дΣ<D0B4><CEA3><EFBFBD>ֱ<EFBFBD>ӻس<D3BB>"
Write-Host "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD>: $revision"
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
if ([string]::IsNullOrWhiteSpace($revision)) {
$version = "$dateTime"
} else {
$version = "$dateTime" + "_$revision"
}
Write-Host "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD>: $version"
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾<CFB0>ű<EFBFBD>ǩ<EFBFBD><C7A9> Docker <20><><EFBFBD><EFBFBD>
Write-Host "<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD> Docker <20><><EFBFBD><EFBFBD>..."
$tempFileBuild = [System.IO.Path]::GetTempFileName()
docker build -t yshtcn/getip_service:$version . 2> $tempFileBuild
if ($LASTEXITCODE -ne 0) {
Write-Host "Docker <20><><EFBFBD>񹹽<EFBFBD>ʧ<EFBFBD><CAA7>" -ForegroundColor Red
Write-Host (Get-Content $tempFileBuild) -ForegroundColor Red
Remove-Item $tempFileBuild
exit
}
Write-Host "Docker <20><><EFBFBD>񹹽<EFBFBD><F1B9B9BD>ɹ<EFBFBD>"
Remove-Item $tempFileBuild
# <20><><EFBFBD>ʹ<EFBFBD><CDB4>а<D0B0>ű<EFBFBD>ǩ<EFBFBD><C7A9> Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Docker Hub
Write-Host "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Docker Hub..."
$tempFilePush = [System.IO.Path]::GetTempFileName()
docker push yshtcn/getip_service:$version 2> $tempFilePush
if ($LASTEXITCODE -ne 0) {
Write-Host "Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>" -ForegroundColor Red
Write-Host (Get-Content $tempFilePush) -ForegroundColor Red
Remove-Item $tempFilePush
exit
}
Write-Host "Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3>"
Remove-Item $tempFilePush
# Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'latest' <20><>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Write-Host "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'latest' <20><>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."
$tempFilePushLatest = [System.IO.Path]::GetTempFileName()
docker tag yshtcn/getip_service:$version yshtcn/getip_service:latest
docker push yshtcn/getip_service:latest 2> $tempFilePushLatest
if ($LASTEXITCODE -ne 0) {
Write-Host "Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'latest' <20><>ǩʧ<C7A9><CAA7>" -ForegroundColor Red
Write-Host (Get-Content $tempFilePushLatest) -ForegroundColor Red
Remove-Item $tempFilePushLatest
exit
}
Write-Host "Docker <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'latest' <20><>ǩ<EFBFBD>ɹ<EFBFBD>"
Remove-Item $tempFilePushLatest
pause

1
requirements.txt Normal file
View File

@@ -0,0 +1 @@
flask