2016-04-30 11 views
1

一部の画像を更新するには、「docker-compose pull」を使用しました。 それから私はビルドします: 'ドッカーのビルド'。ドッカー作成:データコンテナの再作成を避ける

アプリケーションコンテナを更新して を削除して再起動したかっただけです。 'docker-compose rm app'と 'docker-compose up -d app'です。

しかし、何かが起こった。データコンテナも再作成されました。 古いデータが失われました。

データコンテナ用Dockerfile:

FROM gitlab/gitlab-ce:latest 
VOLUME ["/etc/gitlab", "/var/log/gitlab", "/var/opt/gitlab"] 
ENTRYPOINT ["hostname"] 

ドッキングウィンドウ-compose.yml:

version: '2' 
services: 
gitlab: 
    image: 'gitlab/gitlab-ce:latest' 
    domainname: example.com 
    hostname: gitlab 
    networks: 
    - devenv 
    restart: always 
    environment: 
    GITLAB_OMNIBUS_CONFIG: | 
    external_url 'http://gitlab.example.com' 
    gitlab_rails['gitlab_shell_ssh_port'] = 2224 
    ports: 
    - '80:80' 
    - '2224:22' 
    volumes_from: 
    - gitlabdata 

gitlabdata: 
    build: gitlab-data 

どのように私はこの次の時間を避けることができますか?

答えて

1

docker-compose upコマンドのフラグは--no-recreateです。 このフラグは、コンテナが既に存在する場合に再作成しないようにします。

したがって、あなたは、コンテナのボリュームを作成し、その後、コンテナを削除するのであなたの問題だった

docker-compose up -d --no-recreate app 
0

実行することができ、これはまたあなたのボリュームを削除しました。

マウントディレクトリをホストディレクトリにバインドするようにボリュームを変更する必要があります。これにより、ファイルがホストに保存され、コンテナがなくなるとそのディレクトリに再接続できます。もう1つの利点は、ホストからこれらのファイルにアクセスできることです。

ここでは、おおよその構成ファイルが新しいボリューム構成でどのように表示されますか。

version: '2' 
services: 
    gitlab: 
     image: 'gitlab/gitlab-ce:latest' 
     domainname: example.com 
     hostname: gitlab 
     networks: 
     - devenv 
     restart: always 
     environment: 
     GITLAB_OMNIBUS_CONFIG: | 
     external_url 'http://gitlab.example.com' 
     gitlab_rails['gitlab_shell_ssh_port'] = 2224 
     ports: 
      - '80:80' 
      - '2224:22' 
     volumes_from: 
      - gitlabdata 

    gitlabdata: 
     build: gitlab-data 
     Volumes: 
      - /etc/gitlab:/dir/on/host 
      - /var/log/gitlab:/dir/on/host2 
      - /var/opt/gitlab:/dir/on/host3 

あなたはホスト上であなたが望むものにマウントすることができます。ボリュームの詳細はこちらhttps://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-host-directory-as-a-data-volume

+0

'-v'を' docker-compose rm'に渡さないとボリュームが削除されないと思いましたか? – johnharris85

+0

正解、私が質問に答えなかったので、彼らが-vを渡したかどうかはわかりませんが、音量が取り除かれたので、私はそれを仮定していませんでした。それをキャッチするためにありがとう。 –

関連する問題