我正在运行Docker Compose(v2)并且有一个节点服务(网站)和基于python的api部署,nginx位于它们前面.
我想做的一件事是能够通过添加更多容器来扩展服务.如果我提前知道我将拥有多少个容器,我可以使用docker提供的容器的IP引用对nginx上游配置进行硬编码.但是,问题是我希望上游nginx配置是动态的,例如,如果我添加另一个Docker容器,它只需添加将容器的位置附加到上游块中的IP上游列表.
我的想法是创建一个脚本,当容器改变时,它将使用env变量自动附加上游服务器,但我不确定从哪里开始,找不到一个好的例子.
我的 React Redux-Form 中有一个简单的隐藏输入字段,该字段的值由一些 Google Tag Manager 代码设置 document.getElementById('gtm_field').value = 'some value'
onchange 事件永远不会被触发,因此表单字段的值永远不会在我的 Redux 存储中设置。解决此问题的推荐方法是什么?请注意,我可以修改添加到页面的 GTM 代码并触发 HTML 元素事件,但必须将其添加到我的 React 应用程序的“外部”。
有没有一种简单的方法可以从“外部”JS 设置 redux-form 输入字段的值?
我在通过 Docker Compose 创建的容器内运行 Apache Spark。创建工作程序时,我指定主机(我的笔记本电脑)上的哪个端口映射到8081工作程序上的 Web UI 端口。对于 1 个容器,这工作正常,因为我可以绑定8081:8081并且容器化的 Spark Master Web UI 正确链接到localhost:8081.
问题是,当我通过 缩放工作人员数量时docker-compose scale worker=3,我无法在 my 中指定主机上的端口docker-compose.yml,因为缩放会发生冲突。
我尝试过使用动态端口映射,但这会导致转发到工作端口 8081 的主机端口类似于 32XXX,但 Spark Master WebUI 链接仍会假设工作人员 WebUI 位于端口 8081 上,这意味着所有链接都不起作用。
有没有办法在不发生端口冲突的情况下扩展我的容器
我的相关部分docker-compose.yml:
worker:
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.worker.Worker
spark://master:7077
hostname: worker
environment:
SPARK_CONF_DIR: /conf
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 1g
SPARK_WORKER_PORT: 8881
SPARK_WORKER_WEBUI_PORT: 8081
SPARK_PUBLIC_DNS: localhost
links:
- master
- cassandra
- kafka
expose:
- 7012 …Run Code Online (Sandbox Code Playgroud) 我需要在后台执行一个Laravel长时间运行的进程来使用Twitter Streaming API.有效地我需要运行的php artisan CLI命令是
nohup php artisan startStreaming > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)
如果我在命令行中自己运行它,那就完美了.
我的想法是,我可以点击网站上的一个按钮,通过执行长时间运行的artisan命令开始流式传输(需要在后台运行,因为Twitter流连接永远不会结束).通过命令行工作正常.
但是以编程方式调用命令不起作用.我试过通过callSilent()从另一个命令静默调用它,并尝试使用Symfony\Component\Process\Process来运行artisan命令或运行一个运行上述命令的shell脚本但我无法弄明白.
更新 如果我对打开流连接的命令进行排队,则会导致队列工作程序的进程超时
我实际上需要一种从PHP类/脚本运行上述命令的方法,但PHP脚本不等待该命令的完成/输出.
非常感谢
我正在将 Laravel 应用程序部署到多容器 Elastic Beanstalk 配置。应用程序代码打包在一个 zip 文件中并作为部署的一部分上传,然后挂载到 PHP-FPM Docker 容器中。容器正确运行并挂载了代码,但是所有挂载的目录都归其所有root,因此应用程序无法写入这些目录(日志文件、框架文件等需要)。我需要他们拥有www-data
如果我在 EC2 实例上手动 SSH,然后运行docker exec -it container_id bash并运行ls -la我可以看到所有文件/目录都归 root 所有。如果我运行,chown -R www-data: storage vendor则应用程序按预期工作。
因此,我需要找到一种方法来更改php-fpm 容器内已安装目录的权限。
我已经尝试了以下命令 .ebextensions/permissions.config
container_commands:
01_change_storage_permissions:
# Get the php fpm container ID and change permissions on the mounted directories
command: sudo docker exec $(sudo docker ps -aqf "name=php-fpm") chown -R www-data:www-data storage vendor bootstrap
Run Code Online (Sandbox Code Playgroud)
部署成功,所以我可以假设命令执行成功,但不幸的是它似乎没有更改权限,因为登录到容器时,目录仍然归 root 所有
php linux amazon-web-services docker amazon-elastic-beanstalk
如本文所述,我已经设置了CloudFront发行版和Lambda @ Edge函数:
我现在想将S3存储桶限制为私有的,并且仅允许CloudFront分发访问该存储桶。我已将原始访问身份添加到S3 Origin配置,并更新了存储桶策略以允许此OAI GetObject访问存储桶。我已从存储桶策略中删除了该语句,使其公开可读,并将ACL更改为私有。如果我在向CloudFront的请求中未包含任何查询字符串参数,则会按预期返回图像,并且无法直接访问S3链接。
但是,该解决方案依赖于传入查询参数来动态调整图像大小(通过2个Lambda @ Edge函数),并且在将存储桶设为私有后,我从CloudFront获得了Access Denied 403响应。
我尝试禁用对查询字符串的转发,但无效。我还尝试仅更新存储桶策略以删除公共读取访问权限,并将ACL保留为PublicRead并起作用。因此,我认为ACL设置为“私有”是有问题的
我想知道在将存储桶设为私有时,S3是否会返回403而不是404?但是然后我不明白为什么添加白名单的查询字符串参数会对没有查询字符串的相同图像的请求产生不同的结果
更新资料
工作网址示例: http://<my_distro>.cloudfront.net/images/house.jpeg
URL损坏的示例: http://<my_distro>.cloudfront.net/images/house.jpeg?size=1200
我需要将我的类的属性作为字典.为简单起见,我创建了一个具有默认实现的协议,如下所示:
protocol ListsProperties{
func toDictionary() -> [String: AnyObject]
}
extension ListsProperties{
func toDictionary() -> [String: AnyObject] {
let mirrored_object = Mirror(reflecting: self)
var dict = [String: AnyObject]()
for (_, attr) in mirrored_object.children.enumerate() {
if let propertyName = attr.label as String! {
dict[propertyName] = attr.value as? AnyObject
}
}
return dict
}
}
Run Code Online (Sandbox Code Playgroud)
我的类可以符合这个协议,并且可以使用toDictionary()方法.但是,如果我在子类上使用该方法,则这不起作用,因为它只会生成在子类上定义的属性并忽略父超类属性.
理想情况下,我可以找到一些方法来调用镜像超类上的toDictionary()方法,因为这会在它自己的超类上调用toDictionary(),并且编译器说超类镜像不符合协议,即使它正在镜像的类确实.
以下工作,但只有当只有一个超类时,这是不够的:
func toDictionary() -> [String: AnyObject] {
let mirrored_object = Mirror(reflecting: self)
var dict = [String: AnyObject]()
for (_, attr) in mirrored_object.children.enumerate() {
if let propertyName …Run Code Online (Sandbox Code Playgroud) docker ×3
php ×2
amazon-s3 ×1
apache-spark ×1
artisan ×1
aws-lambda ×1
dockerfile ×1
inheritance ×1
javascript ×1
laravel ×1
laravel-5 ×1
linux ×1
mirror ×1
nginx ×1
react-redux ×1
reactjs ×1
redux-form ×1
swift ×1
swift2 ×1
symfony ×1