Skip to content

Instantly share code, notes, and snippets.

@muratcakmaksoftware
Last active May 26, 2022 20:53
Show Gist options
  • Save muratcakmaksoftware/e69eb645ac44689caf781a9631507cf3 to your computer and use it in GitHub Desktop.
Save muratcakmaksoftware/e69eb645ac44689caf781a9631507cf3 to your computer and use it in GitHub Desktop.
Docker Compose YML
version: "3.9" #(Zorunlu)docker engine sürümüne göre version belirlenemsi : https://docs.docker.com/compose/compose-file/compose-file-v3/
services: #containers tanımlanması
php: #service adının belirlenmesi
restart: always #docker başlatıldığında veya bir şekilde durursa container yeniden başlatır.
#restart: no #Default parametresidir. Hiçbir zaman otomatik başlatmaz.
#restart: on-failure #hata olursa tekrar başlatır.
#restart: unless-stopped #Always ile aynı çalışır. Farkı elle durdurulmuş ise docker yeniden başlatma sonrası başlatılmayacaktır.
container_name: app-php # container isminin belirlenmesi
#image: nginx:1.20.2 #Var olan imajı direk kullanmak için
build: #Kendi özelleştirilmiş bir imajını yaratmak için
context: ./php # Dockerfile içerdiği dizin yolunun belirtilmesi.
dockerfile: Dockerfile #Dockerfile dosyası isminin belirtilmesi
# ports: # Local(host) ve container arasında köprü kurarak port açılır.
#Tek port yazılırsa container_port atanır ve local_port rasgele atanacaktır.
# - "9000:80" #<local_port>:<container_port>
# - "16000-17000:16000-17000" #Örnek port aralığı belirtme
working_dir: /var/www #Servisin çalışacağı klasörün belirlenmesi.
expose: #Sadece container'a ve container'lar arasında port açmak için kullanılır.
- 9000
volumes: # Local (host) ile köprü kurarak container'a her iki tarafdaki değişikliği paylaşılır yani eşleme yapar.
- ./www:/var/www #<local_path>:<container_path>
env_file: #ENV dosyasını belirtme.
- ./example.env
environment: #ENV belirtme
- APP_ENV=production
# Belirtilmiş bağlılık services ile aynı zamanda çalıştırılır. Birbirlerini beklememektedirler.
# Mevcut php service çalıştırılırken aynı zamanda web çalıştırılır onun içindede bağlımlık varsa oda tetiklenir.
depends_on:
- web
#Container'a dns belirtmek
#dns: 8.8.8.8 - Yöntem 1
dns: # Yöntem 2
- 8.8.8.8
- 8.8.4.4
#stdin_open: true # docker run -i
#tty: true # docker run -t
#container çalıştıktan sonra terminalde yürütülür ve işlem biterse container kapanır!!!
#command: "php --version"
#Aynı mantıkta birden fazla satırla çalıştırma için
#command: bash -c "
# python manage.py migrate
# && python manage.py runserver 0.0.0.0:8000
# "
#Container'ın network'ünü belirleme.
networks:
default:
ipv4_address: 172.20.0.20
#Container'da /etc/hosts ekleme yapar.
extra_hosts:
- "host-name-1.test:172.20.0.20"
- "host-name-2.test:172.20.0.30"
web:
restart: always
container_name: app-nginx
build:
context: ./nginx
dockerfile: Dockerfile.nginx #Özel isim ile docker file belirlemesi.
ports:
- "80:80"
#links: #eski bağlama tekniğidir bridge network default da kullanılmaktadır.
# - php
#Global Network tanımlamaları
networks:
#Aynı ağ üzerinden containers haberleşmesi için bir network yapılandırması.
my-network: #Yeni network oluşturma
driver: bridge
ipam:
config:
- subnet: 172.10.0.0/24
# Mevcut ağ'a dahil olma.
my-external-network:
external:
name: my-network #hangi ağ'a dahil olucaksa adı
default: #Varsayılan Ağın yapılandırılması
driver: bridge
name: my_default_network
ipam:
config:
- subnet: 172.20.0.0/16
#Global Volume tanımlamaları
volumes:
myapp_volume:
driver: local
##### BONUS #####
#image: "nginx:${NGINX_VERSION:-1.20.2}" #Değişkeni yazdırma ve default belirtme.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment