Last active
May 26, 2022 20:53
-
-
Save muratcakmaksoftware/e69eb645ac44689caf781a9631507cf3 to your computer and use it in GitHub Desktop.
Docker Compose YML
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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