当然,这个问题是广泛而模糊的。但还是。
这里我们有一个集群。这里我们有 gitlab-ci(例如)。
应用程序已组装,测试正在运行,部署正在运行。
这就是为什么现在每个人都挤进这个故事的原因werf
?他带来了以前不存在的东西。对我来说(从我的菜鸟的角度来看)这似乎是一个不必要的附加组件。
请解释一下造船厂的使命是什么?
muturgan's questions
Структура папок следующая:
/
/account
Dockerfile
docker-compose.yml
.env
.env 文件:
TEST=test
码头工人-compose.yml:
version: '3'
services:
account:
env_file:
- .env
build:
context: account/src
dockerfile: Dockerfile
args:
ONE: ${TEST}
TWO: $TEST
THREE: 3
environment:
- FOUR=${TEST}
- FIVE=$TEST
- SIX=6
command: some command
码头文件:
FROM node:12.19.0-alpine3.11
WORKDIR /app
RUN echo ONE $ONE
RUN echo TWO $TWO
RUN echo THREE $THREE
RUN echo FOUR $FOUR
RUN echo FIVE $FIVE
RUN echo SIX $SIX
.. whatever
EXPOSE $APP_PORT
CMD ["some", "command"]
在终端我看到:
Step 3/19 : RUN echo ONE $ONE
---> Running in caa4cd247d5d
ONE
Removing intermediate container caa4cd247d5d
---> 35470ab440be
Step 4/19 : RUN echo TWO $TWO
---> Running in 23ac6fd171b7
TWO
Removing intermediate container 23ac6fd171b7
---> e45af7802515
Step 5/19 : RUN echo THREE $THREE
---> Running in 562ad0182074
THREE
Removing intermediate container 562ad0182074
---> f2e8cbe870d0
Step 6/19 : RUN echo FOUR $FOUR
---> Running in 9e3217e4731b
FOUR
Removing intermediate container 9e3217e4731b
---> d138ea278878
Step 7/19 : RUN echo FIVE $FIVE
---> Running in aa1be66d515c
FIVE
Removing intermediate container aa1be66d515c
---> 1bb0b844cd41
Step 8/19 : RUN echo SIX $SIX
---> Running in 53551d8861b0
SIX
同时,应用程序本身可以看到环境变量(并且看不到参数)。
如何将环境变量传递给 Dockerfile?
该文件docker-compose.yml
包含以下条目:
...
mkvworker:
image: название образа в нашем регистре (какого-то специфичного)
// какого-то специфичного тэга у образа нет, но образ был перезалит
...
除此服务外,还有许多其他不应停止的服务正在运行。
如何在不停止其他服务的情况下重新启动 mkvworker 以便不使用缓存中的图像,但当前的图像是假脱机的?
提前致谢。
node.js 应用程序在基于 alpine 的 docker 容器中运行。
我想使用 npm 包easy-pdf-merge
(很清楚它的作用,对吗?),它在后台调用 Java lib Apache PDFBox
(二进制文件与 npm 包一起到达),因此必须在容器中安装 java。
我使用以下命令安装 java:
RUN apk --no-cache --update add openjdk8
(PDFBox 需要 6+,并且在所有版本 6-11 中,安装 8 时,安装的依赖项最少 - 104 mb)
安装了以下软件包:
(1/38) Installing libffi (3.2.1-r6)
(2/38) Installing p11-kit (0.23.18.1-r0)
(3/38) Installing libtasn1 (4.15.0-r0)
(4/38) Installing p11-kit-trust (0.23.18.1-r0)
(5/38) Installing ca-certificates (20191127-r2)
(6/38) Installing java-cacerts (1.0-r0)
(7/38) Installing nspr (4.24-r0)
(8/38) Installing sqlite-libs (3.30.1-r2)
(9/38) Installing nss (3.48-r0)
(10/38) Installing libxau (1.0.9-r0)
(11/38) Installing libbsd (0.10.0-r0)
(12/38) Installing libxdmcp (1.1.3-r0)
(13/38) Installing libxcb (1.13.1-r0)
(14/38) Installing libx11 (1.6.12-r0)
(15/38) Installing libxcomposite (0.4.5-r0)
(16/38) Installing libxext (1.3.4-r0)
(17/38) Installing libxi (1.7.10-r0)
(18/38) Installing libxrender (0.9.10-r3)
(19/38) Installing libxtst (1.2.3-r3)
(20/38) Installing alsa-lib (1.2.1.2-r0)
(21/38) Installing libbz2 (1.0.8-r1)
(22/38) Installing libpng (1.6.37-r1)
(23/38) Installing freetype (2.10.1-r0)
(24/38) Installing giflib (5.2.1-r0)
(25/38) Installing libjpeg-turbo (2.0.4-r1)
(26/38) Installing openjdk8-jre-lib (8.252.09-r0)
(27/38) Installing java-common (0.2-r0)
(28/38) Installing krb5-conf (1.0-r1)
(29/38) Installing libcom_err (1.45.5-r0)
(30/38) Installing keyutils-libs (1.6.1-r0)
(31/38) Installing libverto (0.3.1-r1)
(32/38) Installing krb5-libs (1.17.1-r0)
(33/38) Installing lcms2 (2.9-r1)
(34/38) Installing pcsc-lite-libs (1.8.25-r2)
(35/38) Installing liblksctp (1.0.18-r1)
(36/38) Installing openjdk8-jre-base (8.252.09-r0)
(37/38) Installing openjdk8-jre (8.252.09-r0)
(38/38) Installing openjdk8 (8.252.09-r0)
我假设我的任务不需要所有这些包(将 pdf-ok 粘贴到一个文件中)。我假设 sqlite-libs 和 ca-certificates 可以被拆除并减小图像的大小。我对一切都会继续工作吗?
但大多数包都有非人类可读的名称。请告诉我在不影响主要任务的情况下也可以拆除的包裹。
openjdk8-jre-lib (8.252.09-r0)
openjdk8-jre-base (8.252.09-r0)
openjdk8-jre (8.252.09-r0)
openjdk8 (8.252.09-r0)
这真的也是你需要的吗?我们可以只说其中一个包吗?(如果最后一个问题很明显,我在 java 0 中很抱歉)
我从官方网站下载了 VirtualBox 6 版本的 deb 包。
放。
virtualbox 命令出现在控制台中。
事实证明,我需要版本 5 才能工作。
我正在尝试删除已安装的实用程序:
sudo apt remove --purge virtualbox
他们告诉我:
Package 'virtualbox' is not installed, so not removed
如何卸载此实用程序?
已知文件中有一些子字符串。
实际上如何获取此子字符串之后的第一个字符?
我正在尝试使用 docker-compose 组织应用程序基础架构。这是源代码:
服务器.js
const fastify = require('fastify');
const app = fastify();
app.get('/', (_req, res) => {
res.send('Hello world!');
});
app.listen({port: 3333, host: '0.0.0.0'}, (error) => {
if (error) {
console.error(error);
process.exit(1);
}
console.info(`fastify server listening...`);
});
码头工人-compose.yml:
version: '3.2'
services:
mysql:
image: mysql
...
ports:
- 3306:3306
webserver:
image: nginx:mainline-alpine
container_name: webserver
ports:
- 80:80
volumes:
- ./nginx-conf:/etc/nginx/conf.d
depends_on:
- nodejs
networks:
- app-network
nodejs:
build: ./node
container_name: nodejs
hostname: nodejs
command: npm run start
volumes:
- ./node:/node_app/
ports:
- 3333:3333
networks:
- app-network
networks:
app-network:
driver: bridge
nginx.conf
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
location / {
proxy_pass http://nodejs:3333;
}
}
server {
listen 3333;
listen [::]:3333;
index index.html index.htm index.nginx-debian.html;
location / {
return 404;
}
}
我运行 docker-compose up,
从浏览器访问并http://localhost
看到“Hello world!”。
但http://localhost:3333
我也看到“你好世界!”。
如何从外界关闭 Node 应用程序?
结果对我来说也是如此,基地也发光了。
一方面,这很好,因为。对于本地开发,我可以使用 MySQL Workbench,另一方面,它必须关闭才能用于生产。
如何正确组织容器在开发和生产中的可见性?
我放上dart
教程:
sudo apt-get update
sudo apt-get install apt-transport-https
sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
sudo apt-get update
sudo apt-get install dart
之后,我已经被提示使用pub
,例如
pub global activate aqueduct
但是,没有这样的命令
Command 'pub' not found, did you mean:...
而且,如果你VS Code
在一个文件夹中创建它并在其中pubspec.yaml
写入依赖项,那么当你保存文件时,这些依赖项被安装,并在弹出窗口中它们写入
pub get: running
如何放置pub
它以便我可以在终端中手动运行此命令?
需要将 TS 项目拆分为多个存储库/包,并从它们的各种组合中构建微服务。一个微服务需要一些包,另一个需要一些包,还有一些。
部署时,编译代码并执行 JS 文件(自然)。
但是现在事实证明,如果只是简单的从include包中的TS文件中导出一些代码,那么在执行编译好的微服务的时候就会报错,因为 微服务代码尝试从外部库导入某些内容,但找不到包含此类内容的 JS 文件。
而为了这样一个系统的正确运行,我不仅需要对包含的包的 TS 代码进行更改,还需要构建它们,将编译后的代码推送到存储库并发布也包含此编译代码的 npm 包。
什么不方便,看起来很奇怪,也很容易忘记。
有没有办法以仅发布(并保持最新)TS代码的方式组织存储库/ npm包,并且在编译微服务时,TS代码从导入中提取,并且JavaScript将在一个地方生成一次部署?
我将立即预订,我在 php 和相关基础设施方面完全为零。
所以。我需要在我的本地机器上执行一个 php 文件。您需要通过网络联系它,而不是在控制台中运行解释器,因为 脚本的结果取决于 url 参数。我不需要代理/平衡任何东西。对剧本的信心是绝对的。
我做了
sudo apt install php
然后立即删除了与它一起安装的apache和apache2。嗯,因为。
原来,php-fpm 也被安装了。
我编辑/etc/php/7.3/fpm/pool.d/www.conf
和写作listen = 127.0.0.1:8888
。
我应该将文件放在哪个文件夹和/或应该编辑配置中的哪一行,以便在我在浏览器的地址栏中键入时,http://localhost:8888/???/myscript.php
我可以看到脚本执行的结果?
我在一个项目中使用soap api。我们使用soap
库。
你需要传递这样的东西:
<persons>
<person name="Ivan"></person>
<person name="Navi"></person>
</persons>
对于一个嵌套元素,我将以下对象作为参数传递:
persons: {
person: {
attributes: {
name: 'Ivan'
}
}
}
如何制作两个同名的嵌套元素,我在dock中没有找到。
开发者封锁了 github 上的 issue 部分,所以我无法在那里提问。
我正在尝试传递一个数组,就像我在xmlbuilder中所做的那样:
persons: {
person: [
{
attributes: {
name: 'Ivan'
}
},
{
attributes: {
name: 'Navi'
}
}
]
}
请求返回错误undefined: undefined
。
如何正确形成请求?
您需要创建一个匹配字符串的正则表达式"страна(переданная или любая)/город(переданный или любой)/улица(переданная или любая)"
生成正则表达式:
let generatePattern = (filerOptions = {}) => {
const options = {
country: `[\\s\\S]`,
city: `[\\s\\S]`,
street: `[\\s\\S]`,
...filerOptions,
};
return pattern = new RegExp(`${options.country}\/${options.city}\/${options.street}`);
}
let reg = generatePattern({}); // /[\s\S]/[\s\S]/[\s\S]/
reg.test('dd/dd/dd'); // false
此外,如果您使用两个组件重复测试,那么一切都会通过:
generatePattern = (filerOptions = {}) => {
const options = {
country: `[\\s\\S]`,
city: `[\\s\\S]`,
...filerOptions,
};
return pattern = new RegExp(`${options.country}\/${options.city}`);
}
reg = generatePattern({}); // /[\s\S]/[\s\S]/
reg.test('dd/dd'); // true
你如何编写一个正则表达式来通过三个由斜杠分隔的任意字符串的测试?
再会。
该项目使用 TypeOrm。
我正在尝试建立表格之间的关系(就像一切都与码头一致)。
我的模型:
@Entity("order")
export class OrderEntity extends BaseEntity {
@PrimaryGeneratedColumn()
public ID!: number;
@Column()
public locator: string;
...
@OneToMany(() => OrderPassenger, (passenger) => passenger.order_id)
public passengers: OrderPassenger[];
public static TEST(id: number)
{
return this.createQueryBuilder("order")
.select("order.locator")
.leftJoinAndSelect("order.passengers", "passenger")
.where("order.ID = :id", { id })
.getMany();
/* первый вариант
return this.find({
relations: ["passengers"],
where: {ID: id},
});
*/
}
}
并进一步
@Entity("order_passengers")
export class OrderPassenger extends BaseEntity {
@PrimaryGeneratedColumn()
public ID!: number;
@Column()
public name_first: string;
...
@ManyToOne(() => OrderEntity, (order) => order.passengers)
public order: OrderEntity;
}
我正在尝试执行 TEST 方法,但出现错误:
TypeError: Cannot read property 'joinColumns' of undefined
我还尝试将 JoinColumn 装饰器与 OneToMany 和 ManyToOne 一起添加,结果是一样的。
我想检查这样的事情:
const f = () => 5;
type t = typeof f();
但是打字稿发誓。
你当然可以这样做:
const f = () => 5;
const r = f();
type t = typeof r;
但是我有一个实例,除了定义类型之外,它不用于任何其他用途,我真的不喜欢这样。
是否有可能以某种方式捕获返回类型?
附加打字稿以做出反应
这是我的组件的样子:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { storeState } from '../../store/store';
import { ThunkDispatch } from 'redux-thunk';
import { AnyAction } from 'redux';
type ControlsProps = {
tags: Array<string>;
isLoading: boolean;
limit: number;
dispatch: ThunkDispatch<storeState, {}, AnyAction>;
}
class Controls extends Component<ControlsProps, {}> {
...
}
export default connect(
(store: storeState) => ({
isLoading: store.loading,
limit: store.filters.limit,
tags: store.tags,
}),
)(Controls);
原来是重复枚举道具。
同时,如果我更改reducer的签名,那么在mapStateToProps中我的更改将立即通过导出的类型拉出,但是在ControlsProps中你需要记住手动进行更改,甚至可以打错字也没有一个人会发誓。
但我想在 mapStateToProps 中注册所有内容 1 次,以便在 ControlsProps 中获取更改本身。
有没有办法获取 mapStateToProps 的返回类型?
有一项任务是将html页面转换为便于打印的PDF格式的报告。
我正在尝试为此使用 phantomjs 库。
我生成一个测试pdf:
const page = await phantom.createPage();
await page.property('viewportSize', {
format: 'A4',
orientation: 'portrait',
margin: {
top: '1cm',
left: '1,6cm',
right: '1,6cm',
bottom: '1cm'
}
});
await page.property('content', '<style>h1 {color:blue;}</style><h1>Hello word</h1><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><h1>Hello word</h1>');
await page.render('test.pdf');
结果,生成了一个 pdf 文件,其中一张纸与 A4 一样宽,但非常长/高。
有没有办法生成 pdf 文件,以便立即将其分为所需的(取决于内容)数量的 A4 纸?
移动开发人员将向我发送压缩的 json 文件。
最原始的提取有用数据的算法是上传文件(存盘),读取并解包(结果存盘),读取解压后的文件(因为这是.json,可以立即保存结果需要对变量进行操作),删除 .json ,删除 .zip。
一些额外的手势。
我已经想出了如何将解包产生的 readStream 转换为对象而不将中间文件保存到磁盘。
有没有办法立即将流传输到“解压缩”(使用 yauzl)进行转换,而不将文件保存到磁盘?
对于上传,我使用 busboy。
有一个带有 ON DELETE SET NULL 行为的辅助键的表。
CREATE TABLE `deltas`
(
`deltaId` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT UNIQUE NOT NULL,
`fwSourceId` INT UNSIGNED,
...
FOREIGN KEY (fwSourceId) REFERENCES fws(fwId)
ON UPDATE CASCADE
ON DELETE SET NULL
) ENGINE = InnoDB;
现在业务逻辑发生了一些变化,我们需要执行 ON DELETE CASCADE。
我只是想断开连接并创建一个具有所需行为的新连接:
ALTER TABLE deltas DROP FOREIGN KEY fwSourceId;
回答 1091
Can't DROP 'fwSourceId'; check that column/key exists
是否有更改 ON DELETE 行为的查询?
我提出以下要求:
(SELECT newsId FROM news WHERE newsId = 2)
UNION
(SELECT newsId FROM news WHERE newsId = 1)
正如预期的那样,我得到:
[
{
"newsId": 2
},
{
"newsId": 1
}
]
但是,如果我像这样更改查询:
(SELECT newsId FROM news WHERE newsId = 1)
UNION
(SELECT newsId FROM news WHERE newsId = 1)
然后我得到:
[
{
"newsId": 1
}
]
我需要:
[
{
"newsId": 1
},
{
"newsId": 1
}
]
我可以以某种方式修改查询以获取所需的数据吗?
根据要求
SELECT JSON_SEARCH('[3]', 'one', 3) as 'index' // в массиве число, ищу число
他们回答我
[
{
"index": null
}
]
并应要求
SELECT JSON_SEARCH('[\"3\"]', 'one', '3') as 'index' // в массиве строка, ищу строку
他们回答我
[
{
"index": "\"$[2]\""
}
]
但应要求
SELECT JSON_SEARCH('[\"3\"]', 'one', 3) as 'index' // в массиве строка, ищу число
他们也回答我
[
{
"index": "\"$[2]\""
}
]
问题是 - 我如何让 mysql 明白我正在寻找一个数字?