我在将PhantomJS添加到我们的网站docker容器时遇到了一些问题.
我有2个容器测试和生产,但不知道如何将它添加到每个容器中.
这些容器是用Dokku制造的,已经在运行了.这有点不同,因此我们无法使用图像提取新容器或编辑其Dockerfiles
此外,我们已经设法使用wget
其中使用的命令dokku run
,但这不是交互式shell.ls
即使下载完成,使用wget下载的文件在检查时似乎也不在容器中.
Procfile:
build: npm run prod
web: nodemon server.js
Run Code Online (Sandbox Code Playgroud)
的package.json
"scripts": {
"prod": "NODE_ENV=production webpack -p --config ./webpack.prod.config.js --progress --optimize-dupe"
}
Run Code Online (Sandbox Code Playgroud)
Webpack.prod.config:
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: null,
entry: [
'./assets/js/index'
],
output: {
path: path.join(__dirname, 'public/dist/'),
filename: 'bundle.js',
publicPath: '/public/'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
minimize: true,
compress: {
warnings: false
}
}),
new webpack.DefinePlugin({
'process.env': { NODE_ENV: '"production"' }
})
],
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
include: path.join(__dirname, …
Run Code Online (Sandbox Code Playgroud) 我将一个应用程序部署到我的 Digital Ocean Dokku 实例,并设置了一个域,以便https://example.com
(使用letsencrypt dokku 插件)指向我的originalApp
. 我最近尝试在我的 Dokku 实例上部署第二个应用程序,认为我可以使用 访问它http://newApp.example.com
,并最终使用new-example.com
它来访问它。
但是,我无法访问我的新应用。
dokku domains:report
产量:
=====> newApp domains information
Domains app enabled: true
Domains app vhosts: new-example.com newApp.example.com
Domains global enabled: true
Domains global vhosts: example.com
=====> originalApp domains information
Domains app enabled: true
Domains app vhosts: example.com
Domains global enabled: true
Domains global vhosts: example.com
Run Code Online (Sandbox Code Playgroud)
最终目标是让两个独立的域指向各自的应用程序。(这甚至可能吗?)但目前,我什至无法让子域工作。
我确认该应用程序正在运行 dokku logs newApp
在 Digital Ocean > Networking 部分,我newDomain.com
有 Digital Ocean NS …
我在我的家用电脑上设置了一个带有 dokku 的数字海洋盒。我已经为我的家庭和工作计算机添加了 ssh 密钥。然后我关闭了密码访问。从两台计算机访问服务器都可以通过 ssh 进行,无需密码。但是,使用 dokku@ 进行 Git 推送只能在我的家用计算机上运行。我错过了什么?- 我应该创建一个新的液滴然后再试一次吗?
所以我只是将我的应用程序推送到Dokku(数字海洋) - 并从ajax帖子返回以下错误:
POST http://example.com/foo 413(请求实体太大)
快速谷歌显示此问题是由于client_max_body_size太低.所以我已经通过SSH连接到服务器,打开了应用程序nginx.conf并按照说明增加了它:
client_max_body_size 100M;
Run Code Online (Sandbox Code Playgroud)
https://github.com/progrium/dokku/issues/802
但是,我仍然遇到同样的问题......我是否需要重启某个进程?我尝试重新启动dokku应用程序 - 但所有这一切都是为了覆盖我的nginx.conf文件.
这里的 swarm 文档https://docs.docker.com/swarm/告诉我们
由于 Docker Swarm 提供标准 Docker API,因此任何已与 Docker 守护进程通信的工具都可以使用 Swarm 透明地扩展到多个主机。支持的工具包括但不限于以下内容:
Dokku Docker Compose Krane Jenkins
那么如何使用 Dokku 和 docker-swarm 来支持多主机呢?
我正在尝试在 Dokku 上设置一些变量以进行部署。就我从开发文件中看到的而言,应该在目录中创建一个 .env 文件并将变量放在那里。但这并没有更新任何东西
.env 文件
DOKKU_NGINX_PORT=3000
MYSQL_URL=http://blabla
MYSQL_USER=mysqluser
Run Code Online (Sandbox Code Playgroud)
我正在尝试将应用程序的端口映射到端口 3000,并将 mysql 变量注入运行时环境。
我知道我可以在服务器上使用 dokku config:set 设置它,但我希望能够在部署过程中实现自动化。
有任何想法吗?或者举例?
我在别处读到 Dokku 不支持 SQLite。为什么不?我正在使用带有 SQLAlchemy 的 Flask 应用程序,这似乎是所有抽象发生的地方。我不能将 sqlite 数据库文件放在磁盘上的某个位置(/home/dokku/database/my_db,也许?)并将其提供给 SQLAlchemy?
engine = create_engine('sqlite://///home/dokku/database/my_db')
Run Code Online (Sandbox Code Playgroud)
更具体地说,我会使用 Dokku 将该字符串存储为环境变量,而不是直接将其传入。
为什么这行不通?
我正在尝试在Dokku中运行我的应用程序
我收到此错误:
5b188e740fcae5a5080e2ac498e6b93a593ae107e656c53e5df1d8c8e13948c8
remote: ! App container failed to start!!
=====> lala web container output:
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to run gunicorn: file does not exist
setuidgid: fatal: unable to …
Run Code Online (Sandbox Code Playgroud)