π’ Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ: ΠΡΠ½ΠΎΠ²ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Dockerfile ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Docker ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅, ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΈ ΠΏΡΡΠΊΠ°ΠΌΠ΅ ΡΠΎΡΡΡΠ΅Ρ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ΅Π΄Π°ΡΠ°.
ΠΠΊΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠΈ ΠΏΠΎΡΠΎΠΏΠΈΠ» ΡΡΡΠ΅ Π² ΡΠ²Π΅ΡΠ° Π½Π° Docker, ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΈΠ΄Π΅Π°Π»Π½Π°ΡΠ° ΠΎΡΠΏΡΠ°Π²Π½Π° ΡΠΎΡΠΊΠ°. Π©Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅:
- ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Docker ΠΈ Π·Π°ΡΠΎ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠΎΡΠ΅Π½,
- ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΡΠ΅Π·
Dockerfile
, - ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
ΠΠΎΡΠΎΠ² Π»ΠΈ ΡΠΈ? ΠΠ° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅! π οΈ
π ΠΠ°ΠΊΠ²ΠΎ Π΅ Docker?
ΠΠ° ΠΊΡΠ°ΡΠΊΠΎ: Docker Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΊΠ°ΡΠΎ ΠΌΠ°Π»ΠΊΠ°, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π Π½Π΅Ρ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅, ΡΠ°ΠΌΠΈΡΡ ΠΊΠΎΠ΄. ΠΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Ρ ΠΎΡΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°.
π ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ vs ΠΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° | ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (Docker) | ΠΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ |
---|---|---|
Π Π°Π·ΠΌΠ΅Ρ | ΠΠ΅ΠΊΠΈ (MB) | Π’Π΅ΠΆΠΊΠΈ (GB) |
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ | ΠΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ | ΠΠΈΠ½ΡΡ(ΠΈ) |
Π‘ΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° OS ΡΠ΄ΡΠΎ | ΠΠ° | ΠΠ΅ |
ΠΠ·ΠΎΠ»Π°ΡΠΈΡ | ΠΠΈΡΠΎΠΊΠ°, Π½ΠΎ Π½Π΅ ΠΏΡΠ»Π½Π° | ΠΡΠ»Π½Π° |
βοΈ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Docker?
Docker ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΡΡΠ²ΡΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°:
- Docker ΠΊΠ»ΠΈΠ΅Π½Ρ β ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (CLI), Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ.
- Docker Π΄Π΅ΠΌΠΎΠ½ (docker daemon) β ΡΠ»ΡΡΠ° Π·Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΎΠ±ΡΠ°Π·ΠΈ, ΠΌΡΠ΅ΠΆΠΈ.
- Docker Hub β ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΡΡ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅Π³Π»ΠΈΠΌ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ²Π°ΠΌΠ΅ Docker ΠΎΠ±ΡΠ°Π·ΠΈ.
π§± ΠΠ°ΠΊΠ²ΠΎ Π΅ Dockerfile?
Dockerfile
Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Docker ΠΎΠ±ΡΠ°Π·.
ΠΠΊΠΎ ΠΎΠ±ΡΠ°Π·ΡΡ Π΅ ΡΠΎΡΡΠ°ΡΠ°, Dockerfile
Π΅ ΡΠ΅ΡΠ΅ΠΏΡΠ°ΡΠ°. Π Π½Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅:
- ΠΊΠΎΡ Π±Π°Π·ΠΎΠ²Π° ΠΠ‘ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°,
- ΠΊΠ°ΠΊΠ²ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ,
- ΠΊΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ» Π΄Π° ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°,
- ΠΊΠ°ΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
π¦ Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΡ Dockerfile
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΡΡ Node.js ΠΎΠ±ΡΠ°Π·, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° βHello, Docker!β Π½Π° ΠΏΠΎΡΡ 3000.
1. Π‘ΡΠ·Π΄Π°ΠΉ ΡΠ°ΠΉΠ» app.js
:
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello, Docker!');
});
server.listen(3000);
console.log('Server running on http://localhost:3000');
2. Π‘ΡΠ·Π΄Π°ΠΉ Dockerfile
:
# ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ Node ΠΎΠ±ΡΠ°Π·
FROM node:18-alpine
# ΠΠ°Π΄Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ°
WORKDIR /app
# ΠΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅
COPY app.js .
# ΠΠ·Π»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎΡΡ 3000
EXPOSE 3000
# Π‘ΡΠ°ΡΡΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
CMD ["node", "app.js"]
3. Π‘ΡΠ·Π΄Π°ΠΉ Docker ΠΎΠ±ΡΠ°Π·:
docker build -t hello-docker .
4. Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
docker run -p 3000:3000 hello-docker
π ΠΠΎΡΠ΅ΡΠΈ http://localhost:3000 ΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡ "Hello, Docker!"
π§ ΠΠΎΠ»Π΅Π·Π½ΠΈ Docker ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ Π½ΡΠΊΠΎΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ, Π½ΠΎ ΡΡΠΏΠ΅Ρ Π²Π°ΠΆΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
π Π Π°Π±ΠΎΡΠ° Ρ ΠΎΠ±ΡΠ°Π·ΠΈ
ΠΠΎΠΌΠ°Π½Π΄Π° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
docker build -t ΠΈΠΌΠ΅ . | Π‘ΡΠ·Π΄Π°Π²Π° Docker ΠΎΠ±ΡΠ°Π· ΠΎΡ Dockerfile |
docker images | Π‘ΠΏΠΈΡΡΠΊ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ |
docker rmi ΠΈΠΌΠ΅/ID | ΠΠ·ΡΡΠΈΠ²Π° ΠΎΠ±ΡΠ°Π· |
π§³ Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ
ΠΠΎΠΌΠ°Π½Π΄Π° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
docker run ΠΈΠΌΠ΅ | Π‘ΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ |
docker run -d -p 80:80 ΠΈΠΌΠ΅ | Π‘ΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° Π·Π°Π΄Π΅Π½ ΠΏΠ»Π°Π½ |
docker ps | ΠΠΎΠΊΠ°Π·Π²Π° Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ |
docker ps -a | ΠΠΎΠΊΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ (Π²ΠΊΠ». ΡΠΏΡΠ΅Π½ΠΈ) |
docker stop ID | Π‘ΠΏΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ |
docker rm ID | ΠΠ·ΡΡΠΈΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ |
π οΈ Π‘ΡΠ²Π΅ΡΠΈ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Dockerfile
- ΠΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π±Π°Π·ΠΎΠ²ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ
alpine
Π²Π΅ΡΡΠΈΠΈ. ΠΠΎ-ΠΌΠ°Π»ΠΊΠΈ = ΠΏΠΎ-Π±ΡΡΠ·ΠΈ. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ
.dockerignore
ΡΠ°ΠΉΠ» β ΠΊΠ°ΠΊΡΠΎ.gitignore
, Π·Π° Π΄Π° Π½Π΅ ΠΊΠΎΠΏΠΈΡΠ°Ρ ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. - ΠΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ β ΠΊΠΎΠΏΠΈΡΠ°ΠΉ
package.json
ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΊΠΎΠ΄. - ΠΠ°ΠΉ-Π½Π°ΠΊΡΠ°Ρ CMD β ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠΏΠΊΠ° Π² ΠΎΠ±ΡΠ°Π·Π°.
π ΠΡΠΈΠΌΠ΅Ρ: docker-compose
Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
ΠΠΊΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (Π½Π°ΠΏΡ. Node.js + MongoDB), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ docker-compose.yml
.
version: '3.9'
services:
app:
build: .
ports:
- "3000:3000"
mongo:
image: mongo
ports:
- "27017:27017"
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉ Ρ:
docker-compose up
π ΠΠ°ΠΊ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅
ΠΠΈΠΆ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅:
docker logs container_name
ΠΠ»Π΅Π· Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
docker exec -it container_name sh
ΠΠ΄Π΅Π°Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° Π΄Π΅Π±ΡΠ³Π²Π°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π²Π° Π²ΡΡΡΠ΅.
π‘ ΠΠ°Π»ΠΊΠΈ Ρ ΠΈΡΡΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°
- ΠΠ°Π·ΠΎΠ²Π°Π²Π°ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Ρ
--name
, Π·Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ
--rm
, Π°ΠΊΠΎ ΠΈΡΠΊΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ ΡΠΏΠΈΡΠ°Π½Π΅. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ
volumes
Π·Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ΄ Ρ Ρ ΠΎΡΡΠ°:docker run -v $(pwd):/app myimage
π§Ό ΠΠ°ΠΊ Π΄Π° ΠΏΠΎΡΠΈΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
Π‘ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Docker ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΅ΠΌΠ° Π΄ΠΎΡΡΠ° ΠΌΡΡΡΠΎ. ΠΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅:
docker system prune # ΠΠ·ΡΡΠΈΠ²Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ
docker volume prune # ΠΠ·ΡΡΠΈΠ²Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈ volumes
docker image prune # ΠΠ·ΡΡΠΈΠ²Π° Π½Π΅Π½ΡΠΆΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ Π³ΠΈ Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! π
π‘οΈ Π‘ΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
- ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ Π²Π³ΡΠ°ΠΆΠ΄Π°ΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠΈ (API ΠΊΠ»ΡΡΠΎΠ²Π΅) Π² Dockerfile!
- ΠΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΊΠ°ΡΠΎ root β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠ°Π²Π°.
- Π‘ΠΊΠ΅Π½Π΅ΡΠΈ ΠΊΠ°ΡΠΎ Trivy β ΠΎΡΠΊΡΠΈΠ²Π°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΠ±ΡΠ°Π·ΠΈ.
π ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ
project/
βββ app.js
βββ Dockerfile
βββ .dockerignore
βββ docker-compose.yml
ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠ°ΡΠ΅Π½ΠΎ Π² GitHub ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ Ρ Π΅ΠΊΠΈΠΏΠ° ΡΠΈ. Docker ΠΏΡΠ°Π²ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ ΠΏΠΎΡΡΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ.
π― ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Docker Π½Π΅ Π΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ β ΡΠΎΠ²Π° Π΅ Π½Π°ΡΠΈΠ½ Π½Π° ΠΌΠΈΡΠ»Π΅Π½Π΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠΈ:
- Π΄Π° ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΡΡΠ΅Π΄ΠΈ,
- Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ,
- ΠΈ Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎ.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΠΈ DevOps, backend ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΅Π½ΡΡΡΠΈΠ°ΡΡ, Docker ΡΠ΅ ΡΠΈ ΡΠΏΠ΅ΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅, ΡΡΠΈΠ»ΠΈΡ ΠΈ Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΡ.
π Π‘ΠΏΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡΠΎΠ±Π²Π°ΠΉ ΠΈ ΡΡΠ°ΡΡΠ²Π°ΠΉ Π² ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°!
ΠΠΊΠΎ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠΈ Π±Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π° β ΡΠΏΠΎΠ΄Π΅Π»ΠΈ Ρ Ρ ΠΊΠΎΠ»Π΅Π³ΠΈ ΠΈ ΠΏΡΠΈΡΡΠ΅Π»ΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½Π° Π±Π°Π·Π° ΠΎΡ Π·Π½Π°Π½ΠΈΡ Π΅ Π±Π΅Π·ΡΠ΅Π½Π½Π°. π
Docker ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΡΠ°ΡΡΠ΅ ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΠΊΠΎΠΉ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅. ΠΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΠ΅ Π² Reddit, Stack Overflow, Discord ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π² Π»ΡΠ±ΠΈΠΌΠΈΡ ΡΠΈ ΡΠΎΡΡΠΌ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°! ΠΠΊΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡ ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π±ΡΡΠΎΠ½ΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
Donate βοΈ ΠΠ°ΡΠ΅ΡΠ΅ Ρ PayPalDonate π³ ΠΠ°ΡΠ΅ΡΠ΅ Ρ Revolut