6

docker-compose.yml ファイルを使用して、django nginx postgresql 用の 3 つの docker コンテナーと純粋なデータ コンテナーを構築しています。

ここに私の docker-compose.yml があります

data:
  # pure data container
  image: busybox
  volumes:
    - /etc/postgresql
    - /var/log/postgresql:/var/log/postgresql
    - /var/lib/postgresql
    - /var/log/nginx:/var/log/nginx
    - /var/log/supervisor:/var/log/supervisor

db:
  image: postgres
  volumes_from:
    - data

web:
  build: .
  ports:
    - "80:80"
    - "443:443"
  links:
    - db
  volumes_from:
    - data


$docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS                                      NAMES
cc26b3a72a02        myweb_web:latest    "supervisord -n"       6 minutes ago       Up 6 minutes               0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   myweb_web_1         
14763a9f68d1        postgres:latest     "/docker-entrypoint.   6 minutes ago       Up 6 minutes               5432/tcp                                   myweb_db_1          
37598892038b        busybox:latest      "/bin/sh"              6 minutes ago       Exited (0) 6 minutes ago                                              myweb_data_1

純粋なデータ コンテナー (myweb_data_1) に格納されている postgresql データをバックアップおよび復元する方法について懸念があります。「docker-compose build && docker-compose up」コマンドを使用して docker イメージを再構築し、コードを更新した場合はコンテナーを再起動しますが、これが正しいかどうか、または最善の方法かどうかはわかりません。

4

2 に答える 2

3

私は postgresql の経験がありませんが、Docker の観点からは、このアプローチはまったく問題ないように思えます。あなたのデータはデータコンテナにあります。の影響を受けませんdocker-compose build && docker-compose up。Raman Gupta は、彼の記事でこのトピックについて適切に紹介しています。

その中で彼は、 data-only-containersに対する適切な考え方が必要であることも強調しています。これは、 「バックアップコンテナ」を持つことができることを意味します。イメージを使用postgresして、そこから新しいコンテナーを実行します--volumes-from myweb_data_1。コンテナーには、postgresql の適切なツールがあり、データ コンテナー内のデータベースにアクセスできます。

繰り返しますが、postgresql は異なる場合がありますが、mysql の場合はこれが方法であり、完全に正常に機能し、私の理解ではベスト プラクティスです。ちなみに、mysqlはサーバーです。したがって、新しいコンテナーを開始し、それをコンテナー--linkに対してリンク ( ) しますmyweb_db_1。postgresql がどのように動作するかわかりません。

于 2015-09-21T12:04:40.333 に答える