2017-05-30 73 views
2

我正在使用Docker for mysql。需要在Dockerfile中設置mysql的系統變量,如max_allowed_pa​​cket,character_set_server和collat​​ion-server。我嘗試使用Dockerfile中提供的下面的命令。但它不起作用。如何通過Dockerfile設置mysql系統變量,如max_allowed_pa​​cket max_allowed_pa​​cket,character_set_server和collat​​ion-server?

Dockerfile:

FROM mysql:latest 
VOLUME /opt/data:/var/lib/mysql 
ENV MYSQL_ROOT_PASSWORD password 
RUN sed -i 's/^max_allowed_packet.*/max_allowed_packet = 1073741824/' /etc/mysql/my.cnf 
RUN sed -i "/\[mysqld]/a character-set-server=utf8mb4" /etc/mysql/my.cnf 
RUN sed -i 's/^collation-server.*/collation-server = utf8mb4_unicode_ci/' /etc/mysql/my.cnf 
CMD ["mysqld"] 

生成命令:

sudo docker build -t mysqltest:1 . 

運行命令:

sudo docker run -p 3306:3306 -restart=always -d mysqltest:1 
+0

莫非您寧願使用泊塢窗「COPY」或「ADD」碼頭er命令來維護一個外部的(本地的)'my.cnf'文件並將其複製到容器的圖像? –

回答

1

有幾種方法,這是一個:

CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--max-allowed-packet=1073741824"] 

作爲替代,你可以把一個自定義配置文件中/etc/mysql/conf.d

定製mysql.cnf:

[mysqld] 
max_allowed_packet = 1073741824 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

Dockerfile:

FROM mysql:latest 
COPY ./custom-mysql.cnf /etc/mysql/conf.d/ 

更多here

+0

非常感謝@Robert。它的工作。 – User123

相關問題