Bagaimana menjalankan docker-menulis-up -d saat sistem start up?

Untuk membiarkan wadah autostart pada saat startup titik, saya mencoba untuk menambahkan perintah:

cd directory_has_docker-menulis.yml && docker-menulis-up -d di /etc/rc.lokal.

tapi kemudian setelah saya reboot mesin, wadah tidak bekerja.

Bagaimana menjalankan docker-menulis-up -d saat sistem start up?

Mengomentari pertanyaan (1)

Ketika kita menggunakan crontab atau usang /etc/rc.lokal file, kita perlu menunda (misalnya tidur 10, tergantung pada mesin) untuk memastikan bahwa sistem pelayanan yang tersedia. Biasanya, common (atau pemula) digunakan untuk mengelola layanan yang mulai ketika sistem boot. Anda dapat mencoba menggunakan konfigurasi yang sama untuk ini:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

Atau, jika anda ingin berjalan tanpa -d bendera:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

Mengubah WorkingDirectory parameter dengan anda dockerized proyek jalan. Dan memungkinkan untuk memulai secara otomatis:

systemctl enable docker-compose-app
Komentar (12)

Anda harus dapat menambahkan:

restart: always 

untuk setiap layanan yang anda ingin me-restart di docker-menulis.yml file

Komentar (6)

Jika anda docker.layanan diaktifkan pada sistem startup

$ sudo systemctl enable docker

dan jasa anda di docker-menulis.yml telah

restart: always

semua layanan yang berjalan ketika anda reboot sistem anda jika anda menjalankan perintah di bawah ini hanya sekali

docker-compose up -d
Komentar (0)

Aku mencoba restart: selalu, ia bekerja di beberapa wadah(seperti php-fpm), tapi saya dihadapkan dengan masalah bahwa beberapa wadah(seperti nginx) masih tidak restart setelah reboot.

Memecahkan masalah.

crontab -e

@reboot (sleep 30s ; cd directory_has_dockercomposeyml ; /usr/local/bin/docker-compose up -d )&
Komentar (4)

Menggunakan restart: selalu di docker menulis file.

Docker-menulis-up -d akan meluncurkan wadah dari gambar lagi. Gunakan docker-menulis start untuk mulai berhenti wadah, itu pernah meluncurkan new wadah dari gambar.

nginx:   
    restart: always   
    image: nginx   
    ports:
      - "80:80"
      - "443:443"   links:
      - other_container:other_container

Anda juga dapat menulis kode di docker file sehingga akan dibuat terlebih dahulu, jika memiliki ketergantungan wadah lainnya.

Komentar (1)

Sebagai tambahan untuk user39544's jawaban, satu lagi jenis sintaks untuk crontab -e:

@reboot sleep 60 && /usr/local/bin/docker-compose -f /path_to_your_project/docker-compose.yml up -d
Komentar (1)