Bu depo temel olarak Docker
ve docker compose
kullanımına örnek teşkil etmesi amacıyla oluşturulmuştur.
docker compose up -d
- Python Flask API ve PHP Arayüzün ortak kullanacağı
local
adında bir ağ başlatır.urunapi_py
UrunAPI_PY
dizinindekiDockerfile
'ı derler ve çalıştırır. »restart=always
- Yereldeki
UrunAPI_PY
dizinini konteyner içine bağlar. - Konteyner içerisinde
5000
portundan yayın yapan Python Flask API'ı yerelde3310
portuna yönlendirir.
website_php
- php:apache imajını çalıştırır. »
restart=always
- Yereldeki
WebSite_PHP
dizinini konteyner içindeapache
'nin çalışacağı dizine bağlar. urunapi_py
konteyneri başladıktan sonra başlaması için bağımlılık tanımlar.- Konteyner içerisinde
80
portundan yayın yapan apache'yi yerelde1453
portuna yönlendirir.
- php:apache imajını çalıştırır. »
- Python Flask API ve PHP Arayüzün ortak kullanacağı
# Konteyner Derle
docker build -t urunapi_py:latest UrunAPI_PY/.
# Konteyner Başlat
docker run -d --name=urunapi_py --restart=always -p 3310:5000 -v ./UrunAPI_PY:/usr/src/UrunAPI_PY urunapi_py:latest
docker run -d --name=website_php --restart=always -p 1453:80 -v ./WebSite_PHP:/var/www/html php:apache
# Konteyner Durdur
docker stop urunapi_py
docker stop website_php
# Compose Başlat
docker compose up -d
# Compose Yeniden Derle / Başlat
docker compose up -d --build
# Compose Durdur
docker compose down -v
# Sistemdeki Kullanılmayan Şeyleri Sil
docker system prune -a
# Compose içindeki tek bir servisi yeniden derle ve ayağa kaldır
docker compose up -d --force-recreate --no-deps --build servis_adi
docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Size}}\t{{.Status}}'
docker stats --no-stream --format "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.MemUsage}}"
docker exec -it <container_id|container_name> bash
Portainer
docker run -d \
--name=portainer \
--restart=always \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
FileBrowser
docker run -d \
--name=filebrowser \
-p 8083:8080 \
hurlenko/filebrowser
WireGuard
docker run -d \
--name=wg-easy \
-e LANG=tr \
-e WG_HOST=🚨🚨🚨IP_ADRESI🚨🚨🚨 \
-e PASSWORD=🚨🚨🚨ADMIN_SIFRESI🚨🚨🚨 \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart=unless-stopped \
ghcr.io/wg-easy/wg-easy
Homarr
docker run -d \
--name=homarr \
--restart=unless-stopped \
-p 7575:7575 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/homarr/configs:/app/data/configs \
-v ~/homarr/data:/data \
-v ~/homarr/icons:/app/public/icons \
ghcr.io/ajnart/homarr:latest
Dash.
docker run -d \
--name=dashdot \
--restart=always \
-p 3001:3001 \
-v /:/mnt/host:ro \
--env DASHDOT_FS_DEVICE_FILTER="sdb" \
--env DASHDOT_NETWORK_SPEED_AS_BYTES=true \
--privileged \
mauricenino/dashdot
aria2 & AriaNg
docker run -d \
--name=aria2-ui \
--restart=always \
-p 6800:6800 \
-p 6880:80 \
-p 6888:81 \
-v ~/Downloads:/aria2/downloads \
huangzulin/aria2-ui
MiniDLNA
docker run -d \
--name=minidlna \
--restart=always \
--net=host \
-v ~/Downloads:/media \
-e TZ=Europe/Istanbul \
-e MINIDLNA_MEDIA_DIR=/media \
-e MINIDLNA_FRIENDLY_NAME=MiniDLNA \
vladgh/minidlna
Samba (SMB)
docker run -d \
--name=samba \
--restart=always \
--net=host \
-p 137:137/udp -p 138:138/udp \
-p 139:139 \
-p 445:445 \
-v ~/Downloads:/mount \
-v ~/Secure_Downloads:/secure_mount \
-e TZ=Europe/Istanbul \
ghcr.io/keyiflerolsun/samba:latest \
-w "WORKGROUP" -n -p \
-g "netbios name = SAMBA" \
-s "public;/mount;yes;no;yes;all;none;İndirilenler" \
-u "🚨USER🚨;🚨PASS🚨" \
-s "secure;/secure_mount;yes;no;no;🚨USER🚨;none;Secure İndirilenler"
public : Gözükecek Dizin Adı
/mount : Konteyner içindeki yol
yes : Gözükebilir
no : Salt Okunur
yes : Misafir Erişimi
all : Erişebilir Kullanıcılar
none : Yönetici Kullanıcılar (Sat Okunur ise)
İndirilenler : Açıklama
NextCloud
version: '2'
volumes:
nextcloud:
db:
services:
db:
container_name: nextcloud_mariadb
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=🚨🚨🚨PASS🚨🚨🚨
- MYSQL_PASSWORD=🚨🚨🚨PASS🚨🚨🚨
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
container_name: nextcloud_app
image: nextcloud
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=🚨🚨🚨PASS🚨🚨🚨
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
CapRover
# https://caprover.com/docs/get-started.html#step-1-caprover-installation
docker run -d \
--name=caprover \
-p 80:80 \
-p 443:443 \
-p 3000:3000 \
-e ACCEPTED_TERMS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /captain:/captain \
caprover/caprover
Nginx Proxy Manager
# https://nginxproxymanager.com/guide/#quick-setup
docker run -d \
--name=nginx-proxy-manager \
--restart=unless-stopped \
-p 80:80 \
-p 81:81 \
-p 443:443 \
-v /root/nginx-proxy-manager/data:/data \
-v /root/nginx-proxy-manager/letsencrypt:/etc/letsencrypt \
jc21/nginx-proxy-manager:latest
MongoDB
docker run -d \
--name=mongodb\
--restart=unless-stopped \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=🚨🚨🚨USER🚨🚨🚨 \
-e MONGO_INITDB_ROOT_PASSWORD=🚨🚨🚨PASS🚨🚨🚨 \
mongo:latest \
--auth
docker run -d \
--name=mongodb \
--restart=unless-stopped \
-p 27017:27017 \
--auth \
mongo:latest
docker exec -it mongodb mongosh
use admin
db.createUser({
user: "🚨🚨🚨USER🚨🚨🚨",
pwd: "🚨🚨🚨PASS🚨🚨🚨",
roles: ["root", "dbAdminAnyDatabase", "clusterAdmin", {role: "dbOwner", db:"admin"}]
})
docker restart mongodb
XAMPP (MySQL)
docker run -d \
--name=myXampp \
--restart=always \
-p 41061:22 \
-p 41062:80 \
-p 41063:3306 \
-v ~/www:/www \
tomsik68/xampp
docker exec -it myXampp bash
export PATH=/opt/lampp/bin:$PATH
mysql mysql
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
scp -P 41061 -r * root@localhost:/opt/lampp/var/mysql/keyif/.
PostgreSQL
version: '3.5'
services:
postgres:
container_name: postgres_container
image: postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-🚨🚨🚨USER🚨🚨🚨}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-🚨🚨🚨PASS🚨🚨🚨}
PGDATA: /data/postgres
volumes:
- postgres:/data/postgres
ports:
- "5432:5432"
networks:
- postgres
restart: unless-stopped
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-🚨🚨🚨MAIL🚨🚨🚨}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-🚨🚨🚨PASS🚨🚨🚨}
PGADMIN_CONFIG_SERVER_MODE: 'False'
volumes:
- pgadmin:/var/lib/pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- postgres
restart: unless-stopped
networks:
postgres:
driver: bridge
volumes:
postgres:
pgadmin:
docker exec -it postgres_container psql -U 🚨🚨🚨USER🚨🚨🚨
CREATE DATABASE 🚨🚨🚨DB🚨🚨🚨;
\q
docker exec -i postgres_container psql -U 🚨🚨🚨USER🚨🚨🚨 -d 🚨🚨🚨DB🚨🚨🚨 < data_dump.sql