小编May*_*ous的帖子

访问 docker 容器 mysql 数据库

我正在尝试从我的 docker 主机访问 mysql 数据库到容器。

这是我自己的 dockerfile,它在端口 3306 上安装了一个数据库公开。我使用 docker-compose 启动我的 docker,我的撰写文件将 3308 主机端口映射到 3306 容器端口。

我可以像这样从主机访问 mysql: mysql -h localhost -P 3308 -u root -pMyPassword

它运行良好,但我无法弄清楚,为什么我看不到容器中的任何数据?

从容器内部,我有一个测试数据库,我可以毫无问题地连接到它。但是当我从主机连接到容器 mysql 进程时,它似乎向我显示了来自主机的 mysql 数据,而不是来自容器的数据。

有任何想法吗?

谢谢 :)

编辑 1:

所以这是我可以将 mysql 连接到容器的第一种方法:

docker exec -it MyContainer mysql -uroot -pMyPassword
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_db            |
+--------------------+
Run Code Online (Sandbox Code Playgroud)

它向我展示了我的数据库:test_db 但是如果我从以下位置访问:

mysql -h localhost -P 3308 -u root -pMyPassword
mysql> show …
Run Code Online (Sandbox Code Playgroud)

mysql docker docker-compose

7
推荐指数
1
解决办法
2万
查看次数

即使从初始化,docker-compose音量也是空的

我对docker很新,我尝试为不同的网站创建一个docker-compose图像.

除了我的卷外,一切都很好.

这是docker-compose的例子:

version: '2'

services:
  website:
    build: 
        context: ./dockerfiles/                                        
        args:                                                                      
            MYSQL_ROOT_PASSWORD: mysqlp@ssword 
    volumes:
        - ./logs:/var/log
        - ./html:/var/www
        - ./nginx:/etc/nginx
        - ./mysql-data:/var/lib/mysql
    ports:
        - "8082:80"
        - "3307:3306"
Run Code Online (Sandbox Code Playgroud)

这是我的docker文件:

FROM php:5.6-fpm

ARG MYSQL_ROOT_PASSWORD

RUN export DEBIAN_FRONTEND=noninteractive; \
echo mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD | debconf-set-selections; \
echo mysql-server mysql-server/root_password_again  password $MYSQL_ROOT_PASSWORD | debconf-set-selections;

RUN apt-get update && apt-get install -y -q mysql-server php5-mysql nginx wget

EXPOSE 80 3306

VOLUME ["/var/www", "/etc/nginx", "/var/lib/mysql", "/var/log"]
Run Code Online (Sandbox Code Playgroud)

一切都运行良好,期望我的所有文件夹都是空的进入我的主机卷.我想在我的文件夹中看到nginx conf和mysl数据.

我究竟做错了什么?

谢谢你的帮助.

编辑1:实际上问题是我希望docker-compose在我的docker目录中创建卷(如果它不存在),并且如果它存在则使用该卷,如https://stackoverflow.com/a/中所述. 39181484.但它似乎不起作用.

docker dockerfile docker-compose

6
推荐指数
1
解决办法
6007
查看次数

在nginx代理后面的码头工人容器内的Wordpress与ssl

我在服务器配置上遇到问题,我无法弄清楚我做错了什么.

所以我有一个像这样的nginx代理:

server {
    listen *:443 ssl;
    ssl_certificate /root/software/keys/mywebsite.keys/mywebsite.crt;
    ssl_certificate_key /root/software/keys/mywebsite.keys/mywebsite.key;

    server_name www.mywebsite.com mywebsite.com;

    access_log /var/log/nginx/mywebsite.access.log;
    error_log /var/log/nginx/mywebsite.error.log;

    root /srv/new-website;
    index index.html index.htm index.php;

    location  / {
        proxy_redirect          off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_body_buffer_size 128k;
        proxy_connect_timeout   90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;
        proxy_buffers           32 4k;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://127.0.0.1:8082;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的容器正在我的docker-compose.yml文件中侦听端口8082:

version: '2'

services:
    websites:
        build: 
            context: ./dockerfiles/                                        
            args:                                                                      
                MYSQL_ROOT_PASSWORD: MyPassword
        volumes:
            - ./logs:/var/log
            - ./html:/var/www
            - ./mysql-data:/var/lib/mysql
        ports:
            - "8082:80"
Run Code Online (Sandbox Code Playgroud)

在我的容器内,我正在安装nginx,使用此配置:

server { …
Run Code Online (Sandbox Code Playgroud)

wordpress https reverse-proxy nginx docker

3
推荐指数
1
解决办法
4514
查看次数