(我是 docker 新手,请耐心等待)注意:我不使用 VOLUMES,所以这个问题的答案不适用
- 我正在使用末尾列出的 docker-compose 文件从两个 docker 映像(jomla+apache+php 和 mysql)创建两个容器。一切正常。
- 我可以连接到 Joomla 安装页面 我通过初始配置,连接到数据库,一切都很好。(我现在可以浏览到主页和管理页面)。甚至安装文件夹也被删除了(joomla 中的强制步骤)。我可以在容器中看到创建/修改的新文件和新数据库。
- 我现在将两个正在运行的容器提交到两个新图像: docker commit CONTAINER_ID new_image_name
- 新图像创建良好
- 我用docker-compose down删除容器
- 我修改 docker-compose.yml 文件以分别为 joomla 和 mysql 使用新提交的图像
- 我发出docker-compose up -d
- 令人沮丧的是:当我浏览到页面时,我回到了 Joomla 安装页面,配置文件不见了,数据库为空,安装文件夹重新出现。换句话说,任何一个图像都没有发生任何事情。我什至删除了旧图像以排除任何意外使用它们的可能性。
为什么 docker 不提交这些更改?
如果我进行手动更改(如docker cp ...或docker exec ...甚至在容器内),那些坚持并提交就好了。我花了整整两天的时间,感谢任何帮助。
码头工人-compose.yml:
version: '3.8'
networks:
frontend:
backend:
services:
mysql_db:
container_name: mysql
image: mysql_me:latest
command: mysqld --innodb-buffer-pool-size=20M
restart: on-failure
environment:
MYSQL_DATABASE: 'joomla'
MYSQL_USER: 'joomla_user'
MYSQL_PASSWORD: 'JPassword'
MYSQL_ROOT_PASSWORD: 'RPassword'
MYSQL_ROOT_HOST: '%'
ports:
- '3306:3306'
expose:
- '3306'
networks:
- backend
joomla:
container_name: joomla
image: joomla_me:latest
restart: always
ports:
- "443:443"
- "8080:80"
environment:
JOOMLA_DB_HOST: 'mysql_db:3306'
JOOMLA_DB_USER: 'joomla_user'
JOOMLA_DB_PASSWORD: 'JPassword'
JOOMLA_DB_NAME: 'joomla'
links:
- mysql_db:3306
networks:
- frontend
- backend
depends_on:
- mysql_db