listen 80;
server_name site.local;
root /src;
location / {
try_files $uri /index.html$is_args$args;
}
db:
image: postgres:13
ports:
- "54321:5432"
environment:
- POSTGRES_DB=app
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secret
volumes:
- ./.var/pg:/var/lib/postgresql/data
healthcheck:
test: PGPASSWORD='secret' psql -U app --command='SELECT 1'
interval: 1s
timeout: 2s
retries: 5
./.var/pg
Будет ли доступна БД при старте приложения, чтобы можно было сгенерировать соурсы для jOOQ?
Пробовал следующие варианты - объявляю args внутри build. Пробовал через environment. А внутри pom.xml уже получаю значение переменной таким образом `${env.XXX}`
Стоит ли билдить фронтенд в контейнере, что очень хотелось бы, чтобы нода с зависимостями была изолирована от сервера?
фронт и бэк побить на разные репозитории, настроить каждому отдельный воркфлоу?
Может, вообще было бы разумнее всё в одном репозитории хранить, но сделать несколько dockerfile, docker-compose?
Стоит ли вообще nginx в контейнер пихать, что тоже очень хотелось бы (при том, что я буду собирать его через make)?
Как при этом перезапускать (и нужно ли) nginx в контейнере?
$promise1 = $client->getAsync('http://www.example.com/foo1');
$promise2 = $client->getAsync('http://www.example.com/foo2');
$promise3 = $client->getAsync('http://www.example.com/foo3');
$promises = [$promise1, $promise2, $promise3];
$results = GuzzleHttp\Promise\settle($promises)->wait(); // тут все результаты
r.Get("/category", category.List)
r.Route("/internal", func(r chi.Router) {
r.Get("/category", category.List)
})
package main
import "fmt"
type RepositoryInterface interface {
GetSubrepo() SubrepoInterface
}
type SubrepoInterface interface {
HelloSubrepo()
}
func main() {
r := Repository{subrepo: Subrepo{}}
useRepository(&r)
}
// func touchRepository(c Repository) {
func useRepository(r RepositoryInterface) {
sr := r.GetSubrepo()
sr.HelloSubrepo()
}
// ******************** Repository package ****************
type Repository struct {
subrepo Subrepo
}
func (r *Repository) GetSubrepo() SubrepoInterface {
return &r.subrepo
}
type Subrepo struct {
}
func (sr *Subrepo) HelloSubrepo() {
fmt.Printf("hello subrepo\n")
}
<div class="slaider_mobile">
<ng-container *ngFor="let contact of contacts">
<app-carousel
[class.contact_item]="true"
[class.contact_item--active]="isActive(contact)"
[title]="contact.title"
[text]="contact.text"
[img]="contact.img"
></app-carousel>
<ng-container>
</div>
<button class="Slaider1_prev" (click)="prev()" type="button"></button>
<button class="Slaider1_next" (click)="next()" type="button"></button>
this.activeContact: Contact = this.contacts[0].title;
isActive(contact: Contact): boolean {
return contact.title === this.activeContact.titile;
}
next() {
// ищем актуальный контакт
const actualIdx = this.contacts.findIndex((c) => {
this.activeContact.title === c.title;
})
// присваиваем следующий, или первый, если сейчас актуальный контакт — последний в списке
const nextIdx = actualIdx + 1;
this.activeContact = nextIdx === this.contacts.length - 1
? this.contacts[0]
: this.activeContact[nextIdx];
}
prev() {
// ищем актуальный контакт
const actualIdx = this.contacts.findIndex((c) => {
this.activeContact.title === c.title
})
// присваиваем предыдущий, или первый, если сейчас первый из списка — к последнему в списке
const prevIdx = actualIdx + 1;
this.activeContact = prevIdx === 0;
? this.contacts[this.contacts.length-1]
: this.activeContact[prevIdx];
}