如何從本機主機連接到在docker網路中執行的docker容器
<p>我有一個mysql的docker容器使用docker寫像這樣:</p>
<pre class="brush:php;toolbar:false;">version: "3.3"
services:
db-server:
container_name: database
image: mysql:latest
build:
dockerfile: ./Dockerfile
environment:
MYSQL_ROOT_PASSWORD: rootTest
MYSQL_USER: soumalya
MYSQL_PASSWORD: userTest
ports:
- "3031:3306"
networks:
- internal
volumes:
- mysql:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
restart: unless-stopped
networks:
internal:
driver: bridge
volumes:
mysql:</pre>
<p>我正在用正確的密碼連接到localhost:3031,但它給了我這個錯誤:</p>
<pre class="lang-bash prettyprint-override"><code>Access denied for user 'root'@'172.19.0.1' (using password: YES)
</code></pre>
<p>我該如何修復這個錯誤?同一內部網路中的其他容器也無法連接到該資料庫。 </p><p>我在這裡給Dockerfile的內容:</p><p><code></code></p>
<pre class="brush:php;toolbar:false;">ADD init.sql init.sql</pre>
<p>我給了init的內容。 sql在這裡:</p>
<pre class="brush:php;toolbar:false;">create database if not exists reviews;
create database if not exists users;
create database if not exists vendors;
GRANT ALL PRIVILEGES on reviews.* to 'soumalya'@'%';
GRANT ALL PRIVILEGES on users.* to 'soumalya'@'%';
GRANT ALL PRIVILEGES on vendors.* to 'soumalya'@'%';</pre>
<p>從容器日誌中,我可以看到資料庫正在啟動並等待連接埠3306中的傳入連線。 </p>