Sof*_*are 5 port containers mariadb docker docker-compose
当使用 docker-compose 文件在 docker 容器中运行 mariadb 时,我无法让 mariadb 使用 3306 以外的其他端口。
我已经阅读了 mariadb/docker 文档,在线搜索并进行了自己的实验。
version: '3.1'
services:
db:
image: mariadb
restart: always
environment:
- MYSQL_ROOT_PASSWORD=mypassword
- MYSQL_TCP_PORT=33030
- MYSQL_UNIX_PORT=33020
ports:
- "33020:33020"
Run Code Online (Sandbox Code Playgroud)
FROM: mariadb: 10.3.14
COPY mydbscript.sql /docker-entrypoint-initdb.d/
EXPOSE 33020
CMD ["mysqld"]
Run Code Online (Sandbox Code Playgroud)
它从不使用端口 33020。它仍然使用端口 3306。如何在运行时通过 docker-compose 文件动态传递端口?
您需要替换默认值my.cnf来为 MariaDB/MySQL 指定自定义端口:
cd /where/your/docker-compose.yml/located
docker run -it mariadb cat /etc/mysql/my.cnf > my.cnf
# use any text editor your like to open my.cnf, search for "port = 3306"
# and replace it to the port you like to have.
Run Code Online (Sandbox Code Playgroud)
像这样配置你的 docker-compose.yml :
version: '3.1'
services:
db:
image: mariadb
restart: always
volumes:
- type: bind
source: ./my.cnf
target: /etc/mysql/my.cnf
environment:
- MYSQL_ROOT_PASSWORD=mypassword
# add your other configurations here
Run Code Online (Sandbox Code Playgroud)
容器镜像静态绑定到:3306. 如果您希望更改此设置,则需要构建新映像并将数据库配置为在其他地方运行。
但是,Docker 允许您将其映射(发布)为不同的端口:33020。
执行此操作的正确方法是:
MYSQL_TCP_PORT=3306ports: - "33020:3306"EXPOSE 3306(未更改)容器(内部)将正确引用,:3306但外部(从主机)数据库将公开在:33020.
注意:在 docker-compose(网络)内,其他容器必须继续引用端口上的数据库:3306。
| 归档时间: |
|
| 查看次数: |
25739 次 |
| 最近记录: |