const query = `
SELECT
A.class, A.fio, A.age, B.teacher_name
FROM
students A
LEFT JOIN teachers B ON A.class = B.class`
func scan(db *sql.DB) (*MyClass, error) {
rows, err := db.Query(query)
if err != nil {
return nil, err
}
class := MyClass{}
for rows.Next() {
var a, b, c, d string
if err := rows.Scan(&a, &b, &c, &d); err != nil {
return nil, err
}
class.Class = a
class.TeacherName = d
class.Students = append(class.Students, Student{Age: c, Fio: b})
}
return &class, nil
}
В книге он говорит о том, что разработчики docker считают, что наиболее правильным в работе контейнеров использовать один процесс на один контейнер.Всё верно. Это основная парадигма при использовании контейнеризации. Ноги растут из 12 factors. Можно одной картинкой
Подскажите, значит ли это, что если я хочу развернуть веб сервер то мне надо минимум 3 контейнераТак и есть. Дальнейший запуск всех приложений осуществляется одной командой. Поскольку она получается довольно длинной (как будто Ява приложение запускаешь), предпочтительно использовать для этих целей docker-compose. Там единственный файл в формате yaml, в котором можно описать, что в какой последовательности запускать и в случае необходимости перезапускать, сколько и каких ресурсов железа выделять каждому приложению и много много ещё чего.
Или это все непринципиально и все можно сложить в один контейнер и будет работать так же хорошо.Можно и так сделать. Правда проще и разумнее всего не заморачиваться в этом случае с контейнерами.
7.1.1 Adapter Configuration
Below is a list of the subscription adapters available for end users.
7.1.1.1 Async Adapter
The async adapter is intended for development/testing and should not be used in production.
7.1.1.2 Redis Adapter
The Redis adapter requires users to provide a URL pointing to the Redis server. Additionally, a channel_prefix may be provided to avoid channel name collisions when using the same Redis server for multiple applications. See the Redis PubSub documentation for more details.
7.1.1.3 PostgreSQL Adapter
The PostgreSQL adapter uses Active Record's connection pool, and thus the application's config/database.yml database configuration, for its connection. This may change in the future. #27214
iptables -I INPUT -s 12.34.56.78 -j ACCEPT
iptables -A INPUT ! -i lo -m geoip ! --src-cc RU -m comment --comment test -j DROP