我是码头新来的。我知道外面有很多答案。我尝试了这个链接host to container,但我不能解决我的问题。我正在为WordPress创建一个带有WordPress cli映像的对接器。
下面是:
version: '3.1'
services:
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_files:/var/www/html
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpressdb
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: wordpressdb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
wordpress_files:
db_data:在上面的代码中,我使用了一个官方的WordPress映像,它与MySQL连接,并成功地创建了它。接下来,我想在那个WordPress映像中安装WordPress cli。下面是我找到的安装WordPress cli的命令。
echo "Installing WP-CLI"
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp我以直接的方式尝试将上面的命令放在Docker文件的命令部分。但失败了。因此,我在主机中保存了install.sh文件中的内容。
接下来,我希望将该文件传输到WordPress映像,该文件应该在安装WordPress映像后触发,并且应该使用该文件在该映像中安装cli。
在这里,我修改的代码:
version: '3.1'
services:
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_files:/var/www/html
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpressdb
COPY /files/install.sh /var/www/html/ =>modified
command: =>modified
/var/www/html/files/install.sh =>modified
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: wordpressdb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
wordpress_files:
db_data:错误:
ERROR: yaml.scanner.ScannerError: while scanning a simple key
in "./word_press_docker_file.yml", line 18, column 6
could not find expected ':'
in "./word_press_docker_file.yml", line 19, column 6但还是失败了。我尝试了几个堆栈溢出的答案,但无法弄清楚。我尝试了COPY命令,但失败了。
发布于 2019-08-30 12:02:08
实现这一目标的一种方法是通过Dockerfile。
您的案例的示例Dockerfile可能如下所示:
FROM wordpress:latest
RUN cd /tmp && echo "Installing WP-CLI" && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x wp-cli.phar && mv wp-cli.phar /usr/local/bin/wp然后,您可以将其构建为新的自定义映像,并在YAML文件中使用。
编辑:
不再允许使用本地图像。因此,您可以使用docker标记命令标记图像,然后在YAML文件中使用。
您可以在这里阅读更多关于这一点的信息:best-practices/
这里提到的另一种方法是:/wordpress/
This image variant does not contain WordPress itself, but instead contains WP-CLI.
The simplest way to use it with an existing WordPress container would be something similar to the following:
$ docker run -it --rm \
--volumes-from some-wordpress \
--network container:some-wordpress \
wordpress:cli user list
Generally speaking, for WP-CLI to interact with a WordPress install, it needs access to the on-disk files of the WordPress install, and access to the database (and the easiest way to accomplish that such that wp-config.php does not require changes is to simply join the networking context of the existing and presumably working WordPress container, but there are many other ways to accomplish that which will be left as an exercise for the reader).发布于 2019-08-30 12:02:07
可以尝试使用RUN指令,如下所示:
RUN echo "Installing WP-CLI" \
&& curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wphttps://stackoverflow.com/questions/57726062
复制相似问题