簡體   English   中英

如何使用docker-compose.yml文件命名卷?

[英]How to name a volume using a docker-compose.yml file?

我是Docker的新手,我正在嘗試找出如何設置創建的數據卷的名稱。 目前,該目錄在/ var / libs / docker下自動命名為長哈希,遠非用戶友好。

我正在嘗試為MODX設置開發環境,如下所示: https//github.com/modxcms/docker-modx

目前我的docker-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

這很好用,但我不確定如何命名我將直接使用IDE編輯的數據量。

(作為一個附帶問題,它是否必須在/ var / libs / docker下創建?或者有沒有辦法將它設置到我的主文件夾中的目錄?)

更新:感謝@juliano的幫助我已將docker-compose.yml文件更新為:

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 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確定此容器的錯誤日志顯示:

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

是不是像docker-compose版本2中的鏈接處理方式不同?

要使用撰寫文件第2版創建命名數據卷您將有一個單獨的區域:

version: '2'

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

volumes:
  amazingvolume:
    external: true

因此,您可以定義卷名稱(amazingvolume),如果它是外部的或在您的服務下(在此示例中為db),您可以定義要安裝的目錄。

只需在docker文檔中搜索托管安裝卷:

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文件將在容器內的目錄。 並在主機左側創建目錄,並為所有用戶授予讀取權限。

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM