我一直在研究当地的Docker开发环境大约一周。我们更喜欢使用Ubuntu Linux或CentOS和RedHat上的Amazon Linux。
这是我迄今为止采取的步骤:
1)创建一个虚拟机来工作
docker-machine create --driver virtualbox default2)将我的终端连接到正在运行的虚拟机:
eval "$(docker-machine env default)"3)拉AMI Linux:
docker pull amazonlinux4)构建一个具有PHP 7.1和Apache 2.4的Dockerfile图像容器
/ AppFolder /搬运工/图像/ apachephp / AMI / Dockerfile
FROM amazonlinux
MAINTAINER Cameron Macfarlane
RUN yum update -y
RUN yum install httpd24 vim php71 php71-pdo php71-mbstring php71-pecl-imagick php71-opcache -y
EXPOSE 80
# Start the service
CMD ["-D", "FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"5)将其编译为killacam / apachephp
docker build -t killacam/apachephp docker/images/apachephp/ami/.6)创建一个虚拟主机文件,将我的本地应用程序连接到文档根目录
/docker/vhost.cnf
ServerAdmin webmaster@local
DocumentRoot /var/www/html/public
ServerName docker.dev
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
7)构建一个MySQL 5.6 Dockerfile(包含/ var / lib / mysql并显示端口3306)
/ AppFolder /搬运工/图像/ MySQL的/ AMI / Dockerfile
FROM amazonlinux
MAINTAINER Cameron Macfarlane
RUN yum update -y
RUN yum install mysql56-server -y
RUN chown -R mysql:root /var/lib/mysql/
EXPOSE 33068)将其编译为killacam / mysql
docker build -t killacam/mysql docker/images/mysql/ami/.9)为MySQL配置创建一个my.cnf文件(user = root是更改)
目前它位于AppFolder / my.cnf中
[mysqld]
user=root
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"字符集服务器= UTF8
10)创建一个docker-compose文件(版本2)
/AppFolder/docker-compose.yml
version: '2'
services:
apachephp:
image: killacam/apachephp
ports:
- "8080:80"
volumes:
- ./:/var/www/html
- ./docker/vhost.conf:/etc/httpd/conf.d/vhost.conf
networks:
- appnet
mysql:
image: killacam/mysql #mysql:5.6
ports:
- "3306:3306"
volumes:
- ./data/:/var/lib/mysql
- ./my.cnf:/etc/my.cnf
tty: true
networks:
- appnet
#environment:
#- "MYSQL_DATABASE=csg"
#- "MYSQL_USER=test"
#- "MYSQL_PASSWORD=qwe123"
#- "MYSQL_ROOT_PASSWORD=root"
networks:
appnet:
driver: "bridge"运行文件docker-compose up
当我在浏览器中打开docker.dev:8080时,出现数据库连接问题。到目前为止,我已经尝试了官方MySQL 5.6包和我自己定制的包。
我也试过像这样只运行killacam/mysql包:
docker run -it -p 3306:3306 -v $(pwd)/my.cnf:/etc/my.cnf killacam/mysql;
并用mysqld启动MySql,但我一直收到这个错误
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
根据此处找到的AWS AMI说明http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html,您需要运行
sudo service mysqld start后跟sudo mysql_secure_installation
但是当您尝试运行这些命令时,它们将失败:sudo service mysqld start,因为AMI docker映像出于某种原因未附带init脚本。
那里的任何人都曾经设置过Docker在AMI上运行MySQL来进行本地开发,这可以帮助我解决问题吗?
谢谢!