一点背景:我是 docker 新手,还不知道任何最佳实践。我的任务是创建一个基于 php 的网络服务,我决定使用 docker-compose 进行配置。
因为我们都是优秀的开发人员,所以我们知道 - 现在没有使用 Composer 构建 php 应用程序的方法。
我应该在构建中安装依赖项吗?因此,通过将其添加到我的 Dockerfile 中:
RUN cd /app && composer install --no-interaction --prefer-source --optimize-autoloader
Run Code Online (Sandbox Code Playgroud)
或者我应该在开发过程中安装依赖项并构建包含依赖项的容器映像?
我只知道一种不这样做的方法:在开发机器上本地安装依赖项,然后构建容器。但是“最佳实践”会是什么样子呢?
而且 - 因为我是这个领域的新手 - 我将如何为我的应用程序服务容器运行“composer require some/package”?
我还注意到一条消息“不要以 root/超级用户身份运行 Composer!” 在构建容器时。我添加COMPOSER_ALLOW_SUPERUSER=1到我的 Env 文件(如这里所示),但此消息仍然出现。
是否可以不在 docker 容器中以 root 身份执行 composer install?我可以忽略该消息吗?
提前致谢,菲利普
为部署在微服务架构(生产中)中的应用程序提供静态文件的首选方式是什么?
为简单起见,假设我有 3 个应用程序服务器和一个将请求转发到这些服务器的负载平衡器。
是否有最佳实践?
我阅读了以下关于“如何将应用程序配置导入到我的 Docker 容器中?”的文章。 https://dantehranian.wordpress.com/2015/03/25/how-should-i-get-application-configuration-into-my-docker-containers/
它总结了 4 个与 2015 年相关的选项。简而言之:
将配置烘焙到容器中
通过环境变量动态设置应用程序配置
通过环境变量动态设置应用程序配置(使用外部 kv 存储)
通过 Docker Volumes 直接映射配置文件
我想知道现在这些选项是否仍然是唯一可行的,或者是否有任何新的选项/模式可以做到这一点?
谢谢。
我有 9 个 pod 正在运行,它们基本上是 9 个不同的应用程序。
是否可以为多个 pod 使用相同的 k8s 服务(LB | 公共 IP),以便我可以通过不同的端口访问它们,但服务的 IP 相同(LB)?
例如像这样:
LB-IP:80 -- 在后端,一个应用程序正在运行,我可以访问它。
LB-IP:8080(与之前的 IP 相同)——我将在后端运行另一个 pod。
**** 每个 pod 的选择器都不同。**
我正在创建一个 Web 应用程序,前端使用 Angular,后端使用 Flask。我已经“dockered”了我的应用程序,但我不确定如何在 Heroku 中将它们作为相同的应用程序获取
我一直在读到有些人使用了反向代理服务器(这意味着两个应用程序都在不同的 heroku 应用程序中,他们使用像 traeffik 或 haproxy 这样的代理连接它们)。但我并不想这样做,我想他们是在同一个应用程序(例如:grupo-camporota.herokuapp.com)
我在想我应该推送两个图像,一个作为 Web dyno(前端),另一个作为工作人员(后端),但我读到工作的 dyno 不是为了这个,而是为了 EXTERNAL api。我想将两个图像上传到 heroku 并让它们在它们之间进行通信。
我想知道如何完成这项工作(我很确定这是可能的),因为我有点迷茫
我正在为 ASP.NET Core 3.1 应用程序设置 Azure DevOps 管道,并且我有以下 YAML 定义测试段)用于构建、测试和代码覆盖。
- task: DotNetCoreCLI@2
displayName: "dotnet global test tool install"
inputs:
command: 'custom'
custom: 'tool'
arguments: 'install --global dotnet-reportgenerator-globaltool'
- task: DotNetCoreCLI@2
displayName: "dotnet test"
inputs:
command: 'test'
projects: '**/*[Tt]ests'
arguments: '--no-build --configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(System.DefaultWorkingDirectory)/TestResults/Coverage'
testRunTitle: 'Unit Test'
workingDirectory: '$(System.DefaultWorkingDirectory)'
- script: reportgenerator -reports:$(System.DefaultWorkingDirectory)/**/cobertura/coverage.xml -targetdir:$(System.DefaultWorkingDirectory)/CodeCoverage -reporttypes:HtmlInLine_AzurePipelines
displayName: "create code coverage report"
- task: PublishCodeCoverageResults@1
displayName: "publish test coverage result"
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/cobertura/coverage.xml'
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?项目来源: …
我正在自动化我的react-native Expo发布周期。我release channels在世博会中使用来构建staging和production构建。例如,每次推送到staging-v1GitHub 分支时,都会触发以下操作。
//staging.yaml
name: Release to staging
on:
push:
branches:
- staging*
jobs:
publish:
name: Install and publish on staging channel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12.x
- uses: expo/expo-github-action@v5
with:
expo-version: 3.x
expo-username: ${{ secrets.EXPO_CLI_USERNAME }}
expo-password: ${{ secrets.EXPO_CLI_PASSWORD }}
expo-packager: npm
- run: npm install
- run: expo publish --release-channel ${{ GITHUB_REF }}
Run Code Online (Sandbox Code Playgroud)
{{ GITHUB_REF }}保存当前分支名称。因此,当我将更改推送staging-v1到此操作时会运行。但是,我收到此错误。
我试过设置 …
我最近能够在 Elastic Beanstalk 上使用代码管道部署我的 Laravel 应用程序,但遇到了问题。我注意到我的路由由于 php.conf Nginx 配置而失败。我必须向 EB 的 nginx php.conf 文件添加几行代码才能使其工作。
我现在的问题是,每次部署后,我修改 php.conf 文件的应用程序实例都被销毁并重新创建。我想要一种在每次成功部署后动态更新文件的方法。我有一个文件版本,我想用我的应用程序进行版本控制,因此想在部署后创建一个指向该文件的符号链接。
经过大量研究,我偶然发现了 Elastic Beanstalk 上的 appDeploy Hooks,它在部署后运行发布脚本,所以这样做了
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/91_post_deploy_script.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
sudo mkdir /var/testing1
sudo ln -sfn /var/www/html/php.conf.example /etc/nginx/conf.d/elasticbeanstalk/php.conf
sudo mkdir /var/testing
sudo nginx -s reload
Run Code Online (Sandbox Code Playgroud)
这由于某种原因不起作用。符号链接未创建,因此我的路线仍然无法正常工作..
我什至添加了一些 mkdir 以确保该脚本中的命令运行,这些命令都没有运行,因为没有创建这些目录。
请注意,如果我通过 ssh 进入 ec2 实例并在那里运行命令,它会起作用。该 bash 脚本也存在于 post 目录中,如果我在服务器上手动运行它,它也能工作。
任何有关我如何解决此问题的指示都会有所帮助。也许我也做错了什么。
现在我已经按照这个来运行我的脚本。但是,脚本没有运行。我收到一个错误
2020/06/28 08:22:13.653339 [INFO] Following platform hooks will be executed in order: [01_myconf.config]
2020/06/28 …Run Code Online (Sandbox Code Playgroud) continuous-integration amazon-web-services continuous-deployment amazon-elastic-beanstalk devops
我们在 r5.large 实例上的 AWS RDS 中有 MariaDB。我们有 4 个实例,每个实例使用了大约 350GB 的存储空间。每个实例有近 2000 个不同的数据库,迁移尝试在所有数据库上运行,但算法会一一执行迁移。
我们正在修改的表实际上很小——每个数据库通常有数百行。
出于某种奇怪的原因,当我们运行此迁移时,AWS RDS MariaDB 消耗了我们拥有的所有存储,因为我们已自动扩展存储,它的值从 350GB 跃升至约 650GB,但仍然不够。此外,如此庞大的数据消耗非常快(基于监控1-2分钟)。然后它就停止了,因为 AWS 拒绝如此迅速地给我们更多的空间,而且没有剩余的存储空间。
它发生在所有 4 个实例上。
这是我们使用的alter表
ALTER TABLE `item_place`
ADD COLUMN IF NOT EXISTS `deleted_at` datetime NULL,
ALGORITHM=NOCOPY, LOCK=NONE;
ALTER TABLE `item_place`
ADD INDEX IF NOT EXISTS `deleted_at` (`deleted_at`),
ALGORITHM=NOCOPY, LOCK=NONE;
Run Code Online (Sandbox Code Playgroud)
我们没有看到任何异常。此外,我们有具有相同迁移的 TEST 数据库,但那里什么也没发生。虽然它们要小得多(5GB),但是当在那里执行迁移时,我们没有看到存储空间的小幅下降。
我们在日志中没有发现任何特别之处。
语境:
我们正在使用 Azure DevOps,并且开始在我们的 DevOps 周期和流程中利用越来越多的 PAT。我们有大约 30 个用户,每个人在他们的个人帐户下为不同的用例创建了一堆用户。
以下是使用它们的一些场景:
基本上,我们开始放松对以下方面的控制:
例如,我们有一些用户创建 PAT 来配置代理。他们将授予对此 PAT 的完全访问权限,而不是为其选择适当的范围。正如我们所知,最终用户并不真正关心安全性,我们知道我们需要教育我们的开发人员。但是,我们仍然希望有办法控制这些 PAT。
问题:
devops ×10
docker ×3
azure-devops ×2
alter-table ×1
asp.net-core ×1
automation ×1
composer-php ×1
database ×1
expo ×1
heroku ×1
kubernetes ×1
mariadb ×1
php ×1
react-native ×1
security ×1
yaml ×1