2017-08-01 33 views
1

我想從mysql容器內的主機掛載一個目錄,以便mysql將它的日誌寫入該目錄,並且我將能夠從主機訪問這些日誌。將mysql容器的日誌掛載到主機目錄中

對於這個我使用下列卷配置:

volumes: 
    - ./logs/mysql:/var/log/mysql 

但隨着this答覆中指出,有主機的用戶和用戶的容器之間的權限問題。那裏的解決方案是使用命名卷,但我想要的是在方便的目錄中訪問主機上的這些日誌。不在碼頭的內部目錄中。

+1

之前,您仍然可以從任何人訪問它們使用sudo權利。 –

+0

@NigelRen問題是,除非明確授予權限,否則mysql不會將日誌寫入目錄。 – Ayushya

+0

你正在使用哪個mysql映像? –

回答

1

於是我就默認圖像並提出一些意見

  1. 缺省情況下不會在/var/log/mysql在所有創建的日誌文件。這是因爲默認的my.cnferror-log設置評論
  2. 您需要創建自己的配置文件添加這些設置,將它們映射內/etc/mysql/mysql.conf.d
  3. /entrypoint.sh不會改變/var/lib/mysql的權限,但不能在/var/log/mysql

因此,要解決這個問題,你添加一個test.cnf文件下面的內容

[mysqld] 
log-error = /var/log/mysql/error.log 
general_log = /var/log/mysql/log_output.log 

和最多日期的下方設置

version: '2' 

services: 
    mysql: 
    image: mysql:latest 
    volumes: 
     - ./logs:/var/log/mysql 
     - ./test.cnf:/etc/mysql/mysql.conf.d/test.cnf 
    environment: 
     MYSQL_ROOT_PASSWORD: root 
    entrypoint: "" 
    command: bash -c "chown -R mysql:mysql /var/log/mysql && exec /entrypoint.sh mysqld" 

泊塢窗,撰寫這將確保運行的入口點腳本適當的權限設置

+0

我認爲這可能是正確的,但我無法得到它的工作。如果我使用的是空白入口點,則docker-compose.yml文件無效,如果我完全刪除了「入口點」,容器將退出,出錯代碼爲0.在第二種情況下,我認爲默認入口點因使用而被覆蓋'command'。我試圖讓它工作,當它發生,我認爲這應該被接受回答:) – Ayushya

+0

嘗試入口點:「」 –

+0

不工作,沒有錯誤,容器仍然退出,錯誤代碼爲0. – Ayushya

相關問題