2016-12-23 20 views
5

私はDockerが新しく、作成したデータボリュームの名前を設定する方法を見つけようとしています。現在、ディレクトリは/ var/libs/dockerにある長いハッシュとして自動的に命名されていますが、これはユーザーフレンドリーではありません。docker-compose.ymlファイルを使用してボリュームに名前を付けるにはどうすればいいですか?

私はここに示されているようMODXのための開発環境を設定しようとしています: https://github.com/modxcms/docker-modx

次のように現在の私のドッキングウィンドウ-compose.ymlファイルは次のとおりです。

web: 
    image: modx 
    links: 
    - db:mysql 
    ports: 
    - 80:80 
db: 
    image: mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: example 
    ports: 
    - 3306:3306 
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
myadmin: 
    image: phpmyadmin/phpmyadmin 
    links: 
    - db:db 
    ports: 
    - 8080:8080 

これは完璧に動作しますが、I IDEで直接編集するデータボリュームに名前を付ける方法が不明です。

(側の質問として、それはの/ var/libsに/ドッキングウィンドウの下に作成する必要がありますまたはマイホームフォルダ内のディレクトリにそれを設定する方法があるのでしょうか??)

更新: 私は私のドッキングウィンドウ-compose.ymlファイルを更新した@julianoからの支援への感謝:

version: '2' 

services: 
    web: 
     image: modx 
     volumes: 
     - html:/home/muzzstick/dev/modxdev 
     links: 
     - db:mysql 
     ports: 
     - 80:80 
    db: 
     image: mysql 
     environment: 
     MYSQL_ROOT_PASSWORD: example 
     ports: 
     - 3306:3306 
     command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
    myadmin: 
     image: phpmyadmin/phpmyadmin 
     links: 
     - db:db 
     ports: 
     - 8080:8080 

volumes: 
    html: 
     external: false 

は、残念ながら、これは、実行中のWebコンテナを停止しているようです。 dbとmyadminコンテナは正常に動作していると表示します。 エラーはありません... docker start docker_web_1と入力すると表示されますが、開始するとすぐにdocker ps -aが終了します。

アップデート2

docker-compose up -dを実行するには、問題なく実行するように表示されます。しかし、以下に示すように、Webコンテナは作成されるとすぐに終了します。

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS      PORTS       NAMES 
a1dd6d8ac94e  modx     "/entrypoint.sh apach" 10 seconds ago  Exited (1) 5 seconds ago         docker_web_1 
ee812ae858dc  phpmyadmin/phpmyadmin "/run.sh phpmyadmin"  10 seconds ago  Up 5 seconds    80/tcp, 0.0.0.0:8080->8080/tcp docker_myadmin_1 
db496134e0cf  mysql     "docker-entrypoint.sh" 11 seconds ago  Up 10 seconds    0.0.0.0:3306->3306/tcp   docker_db_1 

アップデート3 OKこのコンテナのエラーログを示しています

error: missing MODX_DB_HOST and MYSQL_PORT_3306_TCP environment variables 
Did you forget to --link some_mysql_container:mysql or set an external db 
with -e MODX_DB_HOST=hostname:port? 

このエラーは、それがリンクのようなものがに異なる方法で処理されたことでしたhttps://github.com/modxcms/docker-modx/blob/master/apache/docker-entrypoint.sh#L15-L20

から発信されるように表示されますドッカーはバージョン2を作成しますか?それはexternal or notだとあなたのサービスこの例では(デシベルの下であれば、あなたは、ボリューム名(amazingvolume)を定義することができます

version: '2' 

services: 
    db: 
    image: postgres 
    volumes: 
     - amazingvolume:/var/lib/postgresql/data 

volumes: 
    amazingvolume: 
    external: true 

version 2 of compose filesあなたが分離された面積を持つことになりますを使用して、指定されたデータボリュームを作成するには

+0

'docker-compose up'を実行するとどうなりますか? –

+0

さまざまなイメージを予想どおりにプルしてコンテナを作成します。しかし、上記の私の更新でわかるように、Webコンテナはほぼ即座に終了します。 – Muzzstick

答えて

8

)あなたはマウントするディレクトリを定義することができます。

+0

このようにすれば、ボリュームディレクトリ内のファイル(物理ファイルの場所にマウントされる)を編集することはできません。これは、ローカルでファイルをテスト/開発する必要がある開発者にとっては良いケースではありません。 – blackhawk

1

だけでホストされているマウントされたボリュームのためのドッキングウィンドウのドキュメントを検索:

version: '2' 

services: 
    web: 
    image: modx 
    environment: 
     - MYSQL_PORT_3306_TCP=3306 
     - MODX_DB_HOST=mysql:3306 
    volumes: 
     - /home/muzzstick/dev/modxdev/html:/var/www/html 

    links: 
     - db:mysql 
    ports: 
     - 80:80 
    db: 
    image: mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: example 
    ports: 
     - 3306:3306 
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
    myadmin: 
    image: phpmyadmin/phpmyadmin 
    links: 
     - db:db 
    ports: 
     - 8080:8080 

変更/var/www/htmlをhtmlファイルがコンテナ内になりますディレクトリに。また、ホストの左側にディレクトリを作成し、すべてのユーザーに読み取り権限を与えます。

ありがとうございます

+0

こんにちは、ありがとう。私もこれを試しましたが、残念なことに上記の更新された質問に示されているのと同じ問題があります。 Webコンテナはすぐに終了します。 – Muzzstick

+0

そしてログには何が書いてありますか? docker logs containername –

+0

Carlosに感謝、私は上記のエラーメッセージを追加しました。 – Muzzstick

関連する問題